code: async def get_analog_map(self):
          
          # get the current time to make sure a report is retrieved
          current_time = time.time()
  
          # if we do not have existing report results, send a Firmata
          # message to request one
          if self.query_reply_data.get(
                  PrivateConstants.ANALOG_MAPPING_RESPONSE) is None:
              await self._send_sysex(PrivateConstants.ANALOG_MAPPING_QUERY)
              # wait for the report results to return for 2 seconds
              # if the timer expires, shutdown
              while self.query_reply_data.get(
                      PrivateConstants.ANALOG_MAPPING_RESPONSE) is None:
                  elapsed_time = time.time()
                  if elapsed_time - current_time > 4:
                      return None
                  await asyncio.sleep(self.sleep_tune)
          return self.query_reply_data.get(
              PrivateConstants.ANALOG_MAPPING_RESPONSE)
docs: This method requests a Firmata analog map query and returns the results.
  
          :returns: An analog map response or None if a timeout occurs