This function will add a digital value to the specified eDNA service and
    tag, including all default point 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: should be either TRUE or FALSE
    :param status_string: a string that must be EXACTLY 16 characters
    :param warn: TRUE if the point is in a warning state
    :param chattering: TRUE if the point is in a chattering state
    :param unreliable: TRUE if the point is in an unreliable state
    :param manual: TRUE if the point was manually set
    :return: 0, if the data push is successful

def AddDigitalShortIdMsecRecord(site_service, tag, time_value, msec,
    value, status_string="OK              ", warn=False, chattering=False,
    unreliable=False, manual=False):
    """
    This function will add a digital value to the specified eDNA service and
    tag, including all default point 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: should be either TRUE or FALSE
    :param status_string: a string that must be EXACTLY 16 characters
    :param warn: TRUE if the point is in a warning state
    :param chattering: TRUE if the point is in a chattering state
    :param unreliable: TRUE if the point is in an unreliable state
    :param manual: TRUE if the point was 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))
    szStatus = create_string_buffer(status_string.encode('utf-8'))
    bSet = c_int(int(value))
    bDigitalWarning = c_int(int(warn))
    bDigitalChattering = c_int(int(chattering))
    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.DnaAddDigitalShortIdMsecRecord(szService, szPointId,
                tTime, bSet, szStatus, bDigitalWarning, bDigitalChattering,
                bUnreliable, bManual, usMsec)
    return nRet