code: def GetRTFull(tag_name):
      
      # Check if the point even exists
      if not DoesIDExist(tag_name):
          warnings.warn("WARNING- " + tag_name + " does not exist or " +
                        "connection was dropped. Try again if tag does exist.")
          return None
  
      # Define all required variables in the correct ctypes format
      szPoint = c_char_p(tag_name.encode('utf-8'))
      pdValue, ptTime = c_double(-9999), c_long(-9999)
      szValue, szTime = create_string_buffer(20), create_string_buffer(20)
      szStatus, szDesc = create_string_buffer(20), create_string_buffer(20)
      szUnits = create_string_buffer(20)
      nValue, nTime, nStatus = c_ushort(20), c_ushort(20), c_ushort(20)
      pusStatus, nDesc, nUnits = c_ushort(0), c_ushort(0), c_ushort(0)
  
      # Call the eDNA function. nRet is zero if the function is successful
      nRet = dna_dll.DNAGetRTFull(szPoint, byref(pdValue), byref(szValue),
          nValue, byref(ptTime), byref(szTime), nTime, byref(pusStatus),
          byref(szStatus), nStatus, byref(szDesc), nDesc, byref(szUnits), nUnits)
  
      # Check to make sure the function returned correctly. If not, return None
      if nRet == 0:
          return ([pdValue.value, szTime.value.decode('utf-8'),
                  szStatus.value.decode('utf-8'), pusStatus.value,
                  szDesc.value.decode('utf-8'), szUnits.value.decode('utf-8')])
      else:
          warnings.warn("WARNING- eDNA API failed with code " + str(nRet))
          return None
docs: Gets current information about a point configured in a real-time
      eDNA service, including current value, time, status, description,
      and units.
  
      :param tag_name: fully-qualified (site.service.tag) eDNA tag
      :return: tuple of: alue, time, status, statusint, description, units