This function will add an analog value to the specified eDNA service and
    tag, with many optional status definitions.

    :param site_service: The site.service where data will be pushed
    :param tag: The eDNA tag to push data. Tag only (e.g. ADE1CA01)
    :param time_value: The time of the point, which MUST be in UTC Epoch
                format. For example, "1483926416" not "2016/01/01 01:01:01".
    :param msec: The additional milliseconds for the time_value
    :param value: The value associated with the above time.
    :param low_warn: TRUE if the point is in a low warning state
    :param high_warn: TRUE if the point is in a high warning state
    :param low_alarm: TRUE if the point is in a low alarm state
    :param high_alarm: TRUE if the point is in a high alarm state
    :param oor_low: TRUE if the point is out-of-range low
    :param oor_high: TRUE if the point is out-of-range high
    :param unreliable: TRUE if the point is unreliable
    :param manual: TRUE if the point is manually set
    :return: 0, if the data push is successful

def AddAnalogShortIdMsecRecord(site_service, tag, time_value, msec, value,
    low_warn=False, high_warn=False, low_alarm=False, high_alarm=False,
    oor_low=False, oor_high=False, unreliable=False, manual=False):
    """
    This function will add an analog value to the specified eDNA service and
    tag, with many optional status definitions.

    :param site_service: The site.service where data will be pushed
    :param tag: The eDNA tag to push data. Tag only (e.g. ADE1CA01)
    :param time_value: The time of the point, which MUST be in UTC Epoch
                format. For example, "1483926416" not "2016/01/01 01:01:01".
    :param msec: The additional milliseconds for the time_value
    :param value: The value associated with the above time.
    :param low_warn: TRUE if the point is in a low warning state
    :param high_warn: TRUE if the point is in a high warning state
    :param low_alarm: TRUE if the point is in a low alarm state
    :param high_alarm: TRUE if the point is in a high alarm state
    :param oor_low: TRUE if the point is out-of-range low
    :param oor_high: TRUE if the point is out-of-range high
    :param unreliable: TRUE if the point is unreliable
    :param manual: TRUE if the point is manually set
    :return: 0, if the data push is successful
    """
    # Define all required variables in the correct ctypes format
    szService = c_char_p(site_service.encode('utf-8'))
    szPointId = c_char_p(tag.encode('utf-8'))
    tTime = c_long(int(time_value))
    dValue = c_double(value)
    bLowWarning = c_int(int(low_warn))
    bHighWarning = c_int(int(high_warn))
    bLowAlarm = c_int(int(low_alarm))
    bHighAlarm = c_int(int(high_alarm))
    bOutOfRangeLow = c_int(int(oor_low))
    bOutOfRangeHigh = c_int(int(oor_high))
    bUnReliable = c_int(int(unreliable))
    bManual = c_int(int(manual))
    usMsec = c_ushort(msec)

    # Try to push the data. Function will return 0 if successful.
    nRet = dnaserv_dll.DnaAddAnalogShortIdMsecRecord(szService, szPointId,
                tTime, dValue, bLowWarning, bHighWarning, bLowAlarm,
                bHighAlarm, bOutOfRangeLow, bOutOfRangeHigh, bUnReliable,
                bManual, usMsec)
    return nRet