APS Lab
/
STM32F4_SmartMesh_QSL
SmartMesh QSL for STM32F4 version
Fork of COG-AD4050_QSL by
Diff: sm_clib/dn_ipmt.h
- Revision:
- 0:8ca1e814a851
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sm_clib/dn_ipmt.h Wed May 02 09:26:10 2018 +0000 @@ -0,0 +1,879 @@ +/* +Copyright (c) 2015, Dust Networks. All rights reserved. + +C library to connect to a SmartMesh IP Mote. + +\license See attached DN_LICENSE.txt. +*/ + +#ifndef dn_ipmt_h +#define dn_ipmt_h + +#include "dn_common.h" +#include "dn_endianness.h" +#include "dn_clib_version.h" + +//=========================== defines ========================================= + +#define MAX_FRAME_LENGTH 128 +#define DN_SUBCMDID_NONE 0xff + +//===== well-known IPv6 address of the SmartMesh IP manager +static const uint8_t ipv6Addr_manager[16] = { + 0xff,0x02,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02 +}; + +//===== command IDs (requests) +#define CMDID_SETPARAMETER 0x1 +#define CMDID_GETPARAMETER 0x2 +#define CMDID_JOIN 0x6 +#define CMDID_DISCONNECT 0x7 +#define CMDID_RESET 0x8 +#define CMDID_LOWPOWERSLEEP 0x9 +#define CMDID_TESTRADIORX 0xc +#define CMDID_CLEARNV 0x10 +#define CMDID_REQUESTSERVICE 0x11 +#define CMDID_GETSERVICEINFO 0x12 +#define CMDID_OPENSOCKET 0x15 +#define CMDID_CLOSESOCKET 0x16 +#define CMDID_BINDSOCKET 0x17 +#define CMDID_SENDTO 0x18 +#define CMDID_SEARCH 0x24 +#define CMDID_TESTRADIOTXEXT 0x28 +#define CMDID_ZEROIZE 0x29 +#define CMDID_SOCKETINFO 0x2b + +//===== command IDs (notifications) +#define CMDID_TIMEINDICATION 0xd +#define CMDID_EVENTS 0xf +#define CMDID_RECEIVE 0x19 +#define CMDID_MACRX 0x24 +#define CMDID_TXDONE 0x25 +#define CMDID_ADVRECEIVED 0x26 + +//===== parameter IDs +#define PARAMID_MACADDRESS 0x1 +#define PARAMID_JOINKEY 0x2 +#define PARAMID_NETWORKID 0x3 +#define PARAMID_TXPOWER 0x4 +#define PARAMID_JOINDUTYCYCLE 0x6 +#define PARAMID_EVENTMASK 0xb +#define PARAMID_MOTEINFO 0xc +#define PARAMID_NETINFO 0xd +#define PARAMID_MOTESTATUS 0xe +#define PARAMID_TIME 0xf +#define PARAMID_CHARGE 0x10 +#define PARAMID_TESTRADIORXSTATS 0x11 +#define PARAMID_OTAPLOCKOUT 0x15 +#define PARAMID_MOTEID 0x17 +#define PARAMID_IPV6ADDRESS 0x18 +#define PARAMID_ROUTINGMODE 0x1d +#define PARAMID_APPINFO 0x1e +#define PARAMID_POWERSRCINFO 0x1f +#define PARAMID_ADVKEY 0x22 +#define PARAMID_AUTOJOIN 0x24 + +//===== format of requests + +// setParameter_macAddress +#define DN_SETPARAMETER_MACADDRESS_REQ_OFFS_MACADDRESS 1 +#define DN_SETPARAMETER_MACADDRESS_REQ_LEN 9 + +// setParameter_joinKey +#define DN_SETPARAMETER_JOINKEY_REQ_OFFS_JOINKEY 1 +#define DN_SETPARAMETER_JOINKEY_REQ_LEN 17 + +// setParameter_networkId +#define DN_SETPARAMETER_NETWORKID_REQ_OFFS_NETWORKID 1 +#define DN_SETPARAMETER_NETWORKID_REQ_LEN 3 + +// setParameter_txPower +#define DN_SETPARAMETER_TXPOWER_REQ_OFFS_TXPOWER 1 +#define DN_SETPARAMETER_TXPOWER_REQ_LEN 2 + +// setParameter_joinDutyCycle +#define DN_SETPARAMETER_JOINDUTYCYCLE_REQ_OFFS_DUTYCYCLE 1 +#define DN_SETPARAMETER_JOINDUTYCYCLE_REQ_LEN 2 + +// setParameter_eventMask +#define DN_SETPARAMETER_EVENTMASK_REQ_OFFS_EVENTMASK 1 +#define DN_SETPARAMETER_EVENTMASK_REQ_LEN 5 + +// setParameter_OTAPLockout +#define DN_SETPARAMETER_OTAPLOCKOUT_REQ_OFFS_MODE 1 +#define DN_SETPARAMETER_OTAPLOCKOUT_REQ_LEN 2 + +// setParameter_routingMode +#define DN_SETPARAMETER_ROUTINGMODE_REQ_OFFS_MODE 1 +#define DN_SETPARAMETER_ROUTINGMODE_REQ_LEN 2 + +// setParameter_powerSrcInfo +#define DN_SETPARAMETER_POWERSRCINFO_REQ_OFFS_MAXSTCURRENT 1 +#define DN_SETPARAMETER_POWERSRCINFO_REQ_OFFS_MINLIFETIME 3 +#define DN_SETPARAMETER_POWERSRCINFO_REQ_OFFS_CURRENTLIMIT_0 4 +#define DN_SETPARAMETER_POWERSRCINFO_REQ_OFFS_DISCHARGEPERIOD_0 6 +#define DN_SETPARAMETER_POWERSRCINFO_REQ_OFFS_RECHARGEPERIOD_0 8 +#define DN_SETPARAMETER_POWERSRCINFO_REQ_OFFS_CURRENTLIMIT_1 10 +#define DN_SETPARAMETER_POWERSRCINFO_REQ_OFFS_DISCHARGEPERIOD_1 12 +#define DN_SETPARAMETER_POWERSRCINFO_REQ_OFFS_RECHARGEPERIOD_1 14 +#define DN_SETPARAMETER_POWERSRCINFO_REQ_OFFS_CURRENTLIMIT_2 16 +#define DN_SETPARAMETER_POWERSRCINFO_REQ_OFFS_DISCHARGEPERIOD_2 18 +#define DN_SETPARAMETER_POWERSRCINFO_REQ_OFFS_RECHARGEPERIOD_2 20 +#define DN_SETPARAMETER_POWERSRCINFO_REQ_LEN 22 + +// setParameter_advKey +#define DN_SETPARAMETER_ADVKEY_REQ_OFFS_ADVKEY 1 +#define DN_SETPARAMETER_ADVKEY_REQ_LEN 17 + +// setParameter_autoJoin +#define DN_SETPARAMETER_AUTOJOIN_REQ_OFFS_MODE 1 +#define DN_SETPARAMETER_AUTOJOIN_REQ_LEN 2 + +// getParameter_macAddress +#define DN_GETPARAMETER_MACADDRESS_REQ_LEN 1 + +// getParameter_networkId +#define DN_GETPARAMETER_NETWORKID_REQ_LEN 1 + +// getParameter_txPower +#define DN_GETPARAMETER_TXPOWER_REQ_LEN 1 + +// getParameter_joinDutyCycle +#define DN_GETPARAMETER_JOINDUTYCYCLE_REQ_LEN 1 + +// getParameter_eventMask +#define DN_GETPARAMETER_EVENTMASK_REQ_LEN 1 + +// getParameter_moteInfo +#define DN_GETPARAMETER_MOTEINFO_REQ_LEN 1 + +// getParameter_netInfo +#define DN_GETPARAMETER_NETINFO_REQ_LEN 1 + +// getParameter_moteStatus +#define DN_GETPARAMETER_MOTESTATUS_REQ_LEN 1 + +// getParameter_time +#define DN_GETPARAMETER_TIME_REQ_LEN 1 + +// getParameter_charge +#define DN_GETPARAMETER_CHARGE_REQ_LEN 1 + +// getParameter_testRadioRxStats +#define DN_GETPARAMETER_TESTRADIORXSTATS_REQ_LEN 1 + +// getParameter_OTAPLockout +#define DN_GETPARAMETER_OTAPLOCKOUT_REQ_LEN 1 + +// getParameter_moteId +#define DN_GETPARAMETER_MOTEID_REQ_LEN 1 + +// getParameter_ipv6Address +#define DN_GETPARAMETER_IPV6ADDRESS_REQ_LEN 1 + +// getParameter_routingMode +#define DN_GETPARAMETER_ROUTINGMODE_REQ_LEN 1 + +// getParameter_appInfo +#define DN_GETPARAMETER_APPINFO_REQ_LEN 1 + +// getParameter_powerSrcInfo +#define DN_GETPARAMETER_POWERSRCINFO_REQ_LEN 1 + +// getParameter_autoJoin +#define DN_GETPARAMETER_AUTOJOIN_REQ_LEN 1 + +// join +#define DN_JOIN_REQ_LEN 0 + +// disconnect +#define DN_DISCONNECT_REQ_LEN 0 + +// reset +#define DN_RESET_REQ_LEN 0 + +// lowPowerSleep +#define DN_LOWPOWERSLEEP_REQ_LEN 0 + +// testRadioRx +#define DN_TESTRADIORX_REQ_OFFS_CHANNELMASK 0 +#define DN_TESTRADIORX_REQ_OFFS_TIME 2 +#define DN_TESTRADIORX_REQ_OFFS_STATIONID 4 +#define DN_TESTRADIORX_REQ_LEN 5 + +// clearNV +#define DN_CLEARNV_REQ_LEN 0 + +// requestService +#define DN_REQUESTSERVICE_REQ_OFFS_DESTADDR 0 +#define DN_REQUESTSERVICE_REQ_OFFS_SERVICETYPE 2 +#define DN_REQUESTSERVICE_REQ_OFFS_VALUE 3 +#define DN_REQUESTSERVICE_REQ_LEN 7 + +// getServiceInfo +#define DN_GETSERVICEINFO_REQ_OFFS_DESTADDR 0 +#define DN_GETSERVICEINFO_REQ_OFFS_TYPE 2 +#define DN_GETSERVICEINFO_REQ_LEN 3 + +// openSocket +#define DN_OPENSOCKET_REQ_OFFS_PROTOCOL 0 +#define DN_OPENSOCKET_REQ_LEN 1 + +// closeSocket +#define DN_CLOSESOCKET_REQ_OFFS_SOCKETID 0 +#define DN_CLOSESOCKET_REQ_LEN 1 + +// bindSocket +#define DN_BINDSOCKET_REQ_OFFS_SOCKETID 0 +#define DN_BINDSOCKET_REQ_OFFS_PORT 1 +#define DN_BINDSOCKET_REQ_LEN 3 + +// sendTo +#define DN_SENDTO_REQ_OFFS_SOCKETID 0 +#define DN_SENDTO_REQ_OFFS_DESTIP 1 +#define DN_SENDTO_REQ_OFFS_DESTPORT 17 +#define DN_SENDTO_REQ_OFFS_SERVICETYPE 19 +#define DN_SENDTO_REQ_OFFS_PRIORITY 20 +#define DN_SENDTO_REQ_OFFS_PACKETID 21 +#define DN_SENDTO_REQ_OFFS_PAYLOAD 23 +#define DN_SENDTO_REQ_LEN 23 + +// search +#define DN_SEARCH_REQ_LEN 0 + +// testRadioTxExt +#define DN_TESTRADIOTXEXT_REQ_OFFS_TESTTYPE 0 +#define DN_TESTRADIOTXEXT_REQ_OFFS_CHANMASK 1 +#define DN_TESTRADIOTXEXT_REQ_OFFS_REPEATCNT 3 +#define DN_TESTRADIOTXEXT_REQ_OFFS_TXPOWER 5 +#define DN_TESTRADIOTXEXT_REQ_OFFS_SEQSIZE 6 +#define DN_TESTRADIOTXEXT_REQ_OFFS_PKLEN_1 7 +#define DN_TESTRADIOTXEXT_REQ_OFFS_DELAY_1 8 +#define DN_TESTRADIOTXEXT_REQ_OFFS_PKLEN_2 10 +#define DN_TESTRADIOTXEXT_REQ_OFFS_DELAY_2 11 +#define DN_TESTRADIOTXEXT_REQ_OFFS_PKLEN_3 13 +#define DN_TESTRADIOTXEXT_REQ_OFFS_DELAY_3 14 +#define DN_TESTRADIOTXEXT_REQ_OFFS_PKLEN_4 16 +#define DN_TESTRADIOTXEXT_REQ_OFFS_DELAY_4 17 +#define DN_TESTRADIOTXEXT_REQ_OFFS_PKLEN_5 19 +#define DN_TESTRADIOTXEXT_REQ_OFFS_DELAY_5 20 +#define DN_TESTRADIOTXEXT_REQ_OFFS_PKLEN_6 22 +#define DN_TESTRADIOTXEXT_REQ_OFFS_DELAY_6 23 +#define DN_TESTRADIOTXEXT_REQ_OFFS_PKLEN_7 25 +#define DN_TESTRADIOTXEXT_REQ_OFFS_DELAY_7 26 +#define DN_TESTRADIOTXEXT_REQ_OFFS_PKLEN_8 28 +#define DN_TESTRADIOTXEXT_REQ_OFFS_DELAY_8 29 +#define DN_TESTRADIOTXEXT_REQ_OFFS_PKLEN_9 31 +#define DN_TESTRADIOTXEXT_REQ_OFFS_DELAY_9 32 +#define DN_TESTRADIOTXEXT_REQ_OFFS_PKLEN_10 34 +#define DN_TESTRADIOTXEXT_REQ_OFFS_DELAY_10 35 +#define DN_TESTRADIOTXEXT_REQ_OFFS_STATIONID 37 +#define DN_TESTRADIOTXEXT_REQ_LEN 38 + +// zeroize +#define DN_ZEROIZE_REQ_LEN 0 + +// socketInfo +#define DN_SOCKETINFO_REQ_OFFS_INDEX 0 +#define DN_SOCKETINFO_REQ_LEN 1 + +//===== format of replies + +// setParameter_macAddress +#define DN_SETPARAMETER_MACADDRESS_REPLY_LEN 1 + +// setParameter_joinKey +#define DN_SETPARAMETER_JOINKEY_REPLY_LEN 1 + +// setParameter_networkId +#define DN_SETPARAMETER_NETWORKID_REPLY_LEN 1 + +// setParameter_txPower +#define DN_SETPARAMETER_TXPOWER_REPLY_LEN 1 + +// setParameter_joinDutyCycle +#define DN_SETPARAMETER_JOINDUTYCYCLE_REPLY_LEN 1 + +// setParameter_eventMask +#define DN_SETPARAMETER_EVENTMASK_REPLY_LEN 1 + +// setParameter_OTAPLockout +#define DN_SETPARAMETER_OTAPLOCKOUT_REPLY_LEN 1 + +// setParameter_routingMode +#define DN_SETPARAMETER_ROUTINGMODE_REPLY_LEN 1 + +// setParameter_powerSrcInfo +#define DN_SETPARAMETER_POWERSRCINFO_REPLY_LEN 1 + +// setParameter_advKey +#define DN_SETPARAMETER_ADVKEY_REPLY_LEN 1 + +// setParameter_autoJoin +#define DN_SETPARAMETER_AUTOJOIN_REPLY_LEN 1 + +// getParameter_macAddress +#define DN_GETPARAMETER_MACADDRESS_REPLY_OFFS_MACADDRESS 1 +#define DN_GETPARAMETER_MACADDRESS_REPLY_LEN 9 + +// getParameter_networkId +#define DN_GETPARAMETER_NETWORKID_REPLY_OFFS_NETWORKID 1 +#define DN_GETPARAMETER_NETWORKID_REPLY_LEN 3 + +// getParameter_txPower +#define DN_GETPARAMETER_TXPOWER_REPLY_OFFS_TXPOWER 1 +#define DN_GETPARAMETER_TXPOWER_REPLY_LEN 2 + +// getParameter_joinDutyCycle +#define DN_GETPARAMETER_JOINDUTYCYCLE_REPLY_OFFS_JOINDUTYCYCLE 1 +#define DN_GETPARAMETER_JOINDUTYCYCLE_REPLY_LEN 2 + +// getParameter_eventMask +#define DN_GETPARAMETER_EVENTMASK_REPLY_OFFS_EVENTMASK 1 +#define DN_GETPARAMETER_EVENTMASK_REPLY_LEN 5 + +// getParameter_moteInfo +#define DN_GETPARAMETER_MOTEINFO_REPLY_OFFS_APIVERSION 1 +#define DN_GETPARAMETER_MOTEINFO_REPLY_OFFS_SERIALNUMBER 2 +#define DN_GETPARAMETER_MOTEINFO_REPLY_OFFS_HWMODEL 10 +#define DN_GETPARAMETER_MOTEINFO_REPLY_OFFS_HWREV 11 +#define DN_GETPARAMETER_MOTEINFO_REPLY_OFFS_SWVERMAJOR 12 +#define DN_GETPARAMETER_MOTEINFO_REPLY_OFFS_SWVERMINOR 13 +#define DN_GETPARAMETER_MOTEINFO_REPLY_OFFS_SWVERPATCH 14 +#define DN_GETPARAMETER_MOTEINFO_REPLY_OFFS_SWVERBUILD 15 +#define DN_GETPARAMETER_MOTEINFO_REPLY_OFFS_BOOTSWVER 17 +#define DN_GETPARAMETER_MOTEINFO_REPLY_LEN 18 + +// getParameter_netInfo +#define DN_GETPARAMETER_NETINFO_REPLY_OFFS_MACADDRESS 1 +#define DN_GETPARAMETER_NETINFO_REPLY_OFFS_MOTEID 9 +#define DN_GETPARAMETER_NETINFO_REPLY_OFFS_NETWORKID 11 +#define DN_GETPARAMETER_NETINFO_REPLY_OFFS_SLOTSIZE 13 +#define DN_GETPARAMETER_NETINFO_REPLY_LEN 15 + +// getParameter_moteStatus +#define DN_GETPARAMETER_MOTESTATUS_REPLY_OFFS_STATE 1 +#define DN_GETPARAMETER_MOTESTATUS_REPLY_OFFS_RESERVED_0 2 +#define DN_GETPARAMETER_MOTESTATUS_REPLY_OFFS_RESERVED_1 3 +#define DN_GETPARAMETER_MOTESTATUS_REPLY_OFFS_NUMPARENTS 5 +#define DN_GETPARAMETER_MOTESTATUS_REPLY_OFFS_ALARMS 6 +#define DN_GETPARAMETER_MOTESTATUS_REPLY_OFFS_RESERVED_2 10 +#define DN_GETPARAMETER_MOTESTATUS_REPLY_LEN 11 + +// getParameter_time +#define DN_GETPARAMETER_TIME_REPLY_OFFS_UPTIME 1 +#define DN_GETPARAMETER_TIME_REPLY_OFFS_UTCSECS 5 +#define DN_GETPARAMETER_TIME_REPLY_OFFS_UTCUSECS 13 +#define DN_GETPARAMETER_TIME_REPLY_OFFS_ASN 17 +#define DN_GETPARAMETER_TIME_REPLY_OFFS_ASNOFFSET 22 +#define DN_GETPARAMETER_TIME_REPLY_LEN 24 + +// getParameter_charge +#define DN_GETPARAMETER_CHARGE_REPLY_OFFS_QTOTAL 1 +#define DN_GETPARAMETER_CHARGE_REPLY_OFFS_UPTIME 5 +#define DN_GETPARAMETER_CHARGE_REPLY_OFFS_TEMPINT 9 +#define DN_GETPARAMETER_CHARGE_REPLY_OFFS_TEMPFRAC 10 +#define DN_GETPARAMETER_CHARGE_REPLY_LEN 11 + +// getParameter_testRadioRxStats +#define DN_GETPARAMETER_TESTRADIORXSTATS_REPLY_OFFS_RXOK 1 +#define DN_GETPARAMETER_TESTRADIORXSTATS_REPLY_OFFS_RXFAILED 3 +#define DN_GETPARAMETER_TESTRADIORXSTATS_REPLY_LEN 5 + +// getParameter_OTAPLockout +#define DN_GETPARAMETER_OTAPLOCKOUT_REPLY_OFFS_MODE 1 +#define DN_GETPARAMETER_OTAPLOCKOUT_REPLY_LEN 2 + +// getParameter_moteId +#define DN_GETPARAMETER_MOTEID_REPLY_OFFS_MOTEID 1 +#define DN_GETPARAMETER_MOTEID_REPLY_LEN 3 + +// getParameter_ipv6Address +#define DN_GETPARAMETER_IPV6ADDRESS_REPLY_OFFS_IPV6ADDRESS 1 +#define DN_GETPARAMETER_IPV6ADDRESS_REPLY_LEN 17 + +// getParameter_routingMode +#define DN_GETPARAMETER_ROUTINGMODE_REPLY_OFFS_ROUTINGMODE 1 +#define DN_GETPARAMETER_ROUTINGMODE_REPLY_LEN 2 + +// getParameter_appInfo +#define DN_GETPARAMETER_APPINFO_REPLY_OFFS_VENDORID 1 +#define DN_GETPARAMETER_APPINFO_REPLY_OFFS_APPID 3 +#define DN_GETPARAMETER_APPINFO_REPLY_OFFS_APPVER 4 +#define DN_GETPARAMETER_APPINFO_REPLY_LEN 9 + +// getParameter_powerSrcInfo +#define DN_GETPARAMETER_POWERSRCINFO_REPLY_OFFS_MAXSTCURRENT 1 +#define DN_GETPARAMETER_POWERSRCINFO_REPLY_OFFS_MINLIFETIME 3 +#define DN_GETPARAMETER_POWERSRCINFO_REPLY_OFFS_CURRENTLIMIT_0 4 +#define DN_GETPARAMETER_POWERSRCINFO_REPLY_OFFS_DISCHARGEPERIOD_0 6 +#define DN_GETPARAMETER_POWERSRCINFO_REPLY_OFFS_RECHARGEPERIOD_0 8 +#define DN_GETPARAMETER_POWERSRCINFO_REPLY_OFFS_CURRENTLIMIT_1 10 +#define DN_GETPARAMETER_POWERSRCINFO_REPLY_OFFS_DISCHARGEPERIOD_1 12 +#define DN_GETPARAMETER_POWERSRCINFO_REPLY_OFFS_RECHARGEPERIOD_1 14 +#define DN_GETPARAMETER_POWERSRCINFO_REPLY_OFFS_CURRENTLIMIT_2 16 +#define DN_GETPARAMETER_POWERSRCINFO_REPLY_OFFS_DISCHARGEPERIOD_2 18 +#define DN_GETPARAMETER_POWERSRCINFO_REPLY_OFFS_RECHARGEPERIOD_2 20 +#define DN_GETPARAMETER_POWERSRCINFO_REPLY_LEN 22 + +// getParameter_autoJoin +#define DN_GETPARAMETER_AUTOJOIN_REPLY_OFFS_AUTOJOIN 1 +#define DN_GETPARAMETER_AUTOJOIN_REPLY_LEN 2 + +// join +#define DN_JOIN_REPLY_LEN 0 + +// disconnect +#define DN_DISCONNECT_REPLY_LEN 0 + +// reset +#define DN_RESET_REPLY_LEN 0 + +// lowPowerSleep +#define DN_LOWPOWERSLEEP_REPLY_LEN 0 + +// testRadioRx +#define DN_TESTRADIORX_REPLY_LEN 0 + +// clearNV +#define DN_CLEARNV_REPLY_LEN 0 + +// requestService +#define DN_REQUESTSERVICE_REPLY_LEN 0 + +// getServiceInfo +#define DN_GETSERVICEINFO_REPLY_OFFS_DESTADDR 0 +#define DN_GETSERVICEINFO_REPLY_OFFS_TYPE 2 +#define DN_GETSERVICEINFO_REPLY_OFFS_STATE 3 +#define DN_GETSERVICEINFO_REPLY_OFFS_VALUE 4 +#define DN_GETSERVICEINFO_REPLY_LEN 8 + +// openSocket +#define DN_OPENSOCKET_REPLY_OFFS_SOCKETID 0 +#define DN_OPENSOCKET_REPLY_LEN 1 + +// closeSocket +#define DN_CLOSESOCKET_REPLY_LEN 0 + +// bindSocket +#define DN_BINDSOCKET_REPLY_LEN 0 + +// sendTo +#define DN_SENDTO_REPLY_LEN 0 + +// search +#define DN_SEARCH_REPLY_LEN 0 + +// testRadioTxExt +#define DN_TESTRADIOTXEXT_REPLY_LEN 0 + +// zeroize +#define DN_ZEROIZE_REPLY_LEN 0 + +// socketInfo +#define DN_SOCKETINFO_REPLY_OFFS_INDEX 0 +#define DN_SOCKETINFO_REPLY_OFFS_SOCKETID 1 +#define DN_SOCKETINFO_REPLY_OFFS_PROTOCOL 2 +#define DN_SOCKETINFO_REPLY_OFFS_BINDSTATE 3 +#define DN_SOCKETINFO_REPLY_OFFS_PORT 4 +#define DN_SOCKETINFO_REPLY_LEN 6 + +//===== format of notifications + +// timeIndication +#define DN_TIMEINDICATION_NOTIF_OFFS_UPTIME 0 +#define DN_TIMEINDICATION_NOTIF_OFFS_UTCSECS 4 +#define DN_TIMEINDICATION_NOTIF_OFFS_UTCUSECS 12 +#define DN_TIMEINDICATION_NOTIF_OFFS_ASN 16 +#define DN_TIMEINDICATION_NOTIF_OFFS_ASNOFFSET 21 +#define DN_TIMEINDICATION_NOTIF_LEN 23 + +// events +#define DN_EVENTS_NOTIF_OFFS_EVENTS 0 +#define DN_EVENTS_NOTIF_OFFS_STATE 4 +#define DN_EVENTS_NOTIF_OFFS_ALARMSLIST 5 +#define DN_EVENTS_NOTIF_LEN 9 + +// receive +#define DN_RECEIVE_NOTIF_OFFS_SOCKETID 0 +#define DN_RECEIVE_NOTIF_OFFS_SRCADDR 1 +#define DN_RECEIVE_NOTIF_OFFS_SRCPORT 17 +#define DN_RECEIVE_NOTIF_OFFS_PAYLOAD 19 +#define DN_RECEIVE_NOTIF_LEN 19 + +// macRx +#define DN_MACRX_NOTIF_OFFS_PAYLOAD 0 +#define DN_MACRX_NOTIF_LEN 0 + +// txDone +#define DN_TXDONE_NOTIF_OFFS_PACKETID 0 +#define DN_TXDONE_NOTIF_OFFS_STATUS 2 +#define DN_TXDONE_NOTIF_LEN 3 + +// advReceived +#define DN_ADVRECEIVED_NOTIF_OFFS_NETID 0 +#define DN_ADVRECEIVED_NOTIF_OFFS_MOTEID 2 +#define DN_ADVRECEIVED_NOTIF_OFFS_RSSI 4 +#define DN_ADVRECEIVED_NOTIF_OFFS_JOINPRI 5 +#define DN_ADVRECEIVED_NOTIF_LEN 6 + +//=========================== typedef ========================================= + +//=== reply types + +typedef struct { + uint8_t RC; +} dn_ipmt_setParameter_macAddress_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_setParameter_joinKey_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_setParameter_networkId_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_setParameter_txPower_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_setParameter_joinDutyCycle_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_setParameter_eventMask_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_setParameter_OTAPLockout_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_setParameter_routingMode_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_setParameter_powerSrcInfo_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_setParameter_advKey_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_setParameter_autoJoin_rpt; + +typedef struct { + uint8_t RC; + uint8_t macAddress[8]; +} dn_ipmt_getParameter_macAddress_rpt; + +typedef struct { + uint8_t RC; + uint16_t networkId; +} dn_ipmt_getParameter_networkId_rpt; + +typedef struct { + uint8_t RC; + int8_t txPower; +} dn_ipmt_getParameter_txPower_rpt; + +typedef struct { + uint8_t RC; + uint8_t joinDutyCycle; +} dn_ipmt_getParameter_joinDutyCycle_rpt; + +typedef struct { + uint8_t RC; + uint32_t eventMask; +} dn_ipmt_getParameter_eventMask_rpt; + +typedef struct { + uint8_t RC; + uint8_t apiVersion; + uint8_t serialNumber[8]; + uint8_t hwModel; + uint8_t hwRev; + uint8_t swVerMajor; + uint8_t swVerMinor; + uint8_t swVerPatch; + uint16_t swVerBuild; + uint8_t bootSwVer; +} dn_ipmt_getParameter_moteInfo_rpt; + +typedef struct { + uint8_t RC; + uint8_t macAddress[8]; + uint16_t moteId; + uint16_t networkId; + uint16_t slotSize; +} dn_ipmt_getParameter_netInfo_rpt; + +typedef struct { + uint8_t RC; + uint8_t state; + uint8_t reserved_0; + uint16_t reserved_1; + uint8_t numParents; + uint32_t alarms; + uint8_t reserved_2; +} dn_ipmt_getParameter_moteStatus_rpt; + +typedef struct { + uint8_t RC; + uint32_t upTime; + uint8_t utcSecs[8]; + uint32_t utcUsecs; + uint8_t asn[5]; + uint16_t asnOffset; +} dn_ipmt_getParameter_time_rpt; + +typedef struct { + uint8_t RC; + uint32_t qTotal; + uint32_t upTime; + int8_t tempInt; + uint8_t tempFrac; +} dn_ipmt_getParameter_charge_rpt; + +typedef struct { + uint8_t RC; + uint16_t rxOk; + uint16_t rxFailed; +} dn_ipmt_getParameter_testRadioRxStats_rpt; + +typedef struct { + uint8_t RC; + bool mode; +} dn_ipmt_getParameter_OTAPLockout_rpt; + +typedef struct { + uint8_t RC; + uint16_t moteId; +} dn_ipmt_getParameter_moteId_rpt; + +typedef struct { + uint8_t RC; + uint8_t ipv6Address[16]; +} dn_ipmt_getParameter_ipv6Address_rpt; + +typedef struct { + uint8_t RC; + bool routingMode; +} dn_ipmt_getParameter_routingMode_rpt; + +typedef struct { + uint8_t RC; + uint16_t vendorId; + uint8_t appId; + uint8_t appVer[5]; +} dn_ipmt_getParameter_appInfo_rpt; + +typedef struct { + uint8_t RC; + uint16_t maxStCurrent; + uint8_t minLifetime; + uint16_t currentLimit_0; + uint16_t dischargePeriod_0; + uint16_t rechargePeriod_0; + uint16_t currentLimit_1; + uint16_t dischargePeriod_1; + uint16_t rechargePeriod_1; + uint16_t currentLimit_2; + uint16_t dischargePeriod_2; + uint16_t rechargePeriod_2; +} dn_ipmt_getParameter_powerSrcInfo_rpt; + +typedef struct { + uint8_t RC; + bool autoJoin; +} dn_ipmt_getParameter_autoJoin_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_join_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_disconnect_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_reset_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_lowPowerSleep_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_testRadioRx_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_clearNV_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_requestService_rpt; + +typedef struct { + uint8_t RC; + uint16_t destAddr; + uint8_t type; + uint8_t state; + uint32_t value; +} dn_ipmt_getServiceInfo_rpt; + +typedef struct { + uint8_t RC; + uint8_t socketId; +} dn_ipmt_openSocket_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_closeSocket_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_bindSocket_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_sendTo_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_search_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_testRadioTxExt_rpt; + +typedef struct { + uint8_t RC; +} dn_ipmt_zeroize_rpt; + +typedef struct { + uint8_t RC; + uint8_t index; + uint8_t socketId; + uint8_t protocol; + uint8_t bindState; + uint16_t port; +} dn_ipmt_socketInfo_rpt; + +//=== notification types + +typedef struct { + uint32_t uptime; + uint8_t utcSecs[8]; + uint32_t utcUsecs; + uint8_t asn[5]; + uint16_t asnOffset; +} dn_ipmt_timeIndication_nt; + +typedef struct { + uint32_t events; + uint8_t state; + uint32_t alarmsList; +} dn_ipmt_events_nt; + +typedef struct { + uint8_t socketId; + uint8_t srcAddr[16]; + uint16_t srcPort; + uint8_t payloadLen; + uint8_t payload[MAX_FRAME_LENGTH]; +} dn_ipmt_receive_nt; + +typedef struct { + uint8_t payload[MAX_FRAME_LENGTH]; +} dn_ipmt_macRx_nt; + +typedef struct { + uint16_t packetId; + uint8_t status; +} dn_ipmt_txDone_nt; + +typedef struct { + uint16_t netId; + uint16_t moteId; + int8_t rssi; + uint8_t joinPri; +} dn_ipmt_advReceived_nt; + +//=== callback signature +typedef void (*dn_ipmt_notif_cbt)(uint8_t cmdId, uint8_t subCmdId); +typedef void (*dn_ipmt_reply_cbt)(uint8_t cmdId); +typedef void (*dn_ipmt_status_cbt)(uint8_t newStatus); // only used in SmartMesh IP manager + +//=========================== variables ======================================= + +//=========================== prototypes ====================================== + +#ifdef __cplusplus + extern "C" { +#endif + +//==== admin +void dn_ipmt_init(dn_ipmt_notif_cbt notifCb, uint8_t* notifBuf, uint8_t notifBufLen, dn_ipmt_reply_cbt replyCb); +void dn_ipmt_cancelTx(); + + +//==== API +dn_err_t dn_ipmt_setParameter_macAddress(uint8_t* macAddress, dn_ipmt_setParameter_macAddress_rpt* reply); +dn_err_t dn_ipmt_setParameter_joinKey(uint8_t* joinKey, dn_ipmt_setParameter_joinKey_rpt* reply); +dn_err_t dn_ipmt_setParameter_networkId(uint16_t networkId, dn_ipmt_setParameter_networkId_rpt* reply); +dn_err_t dn_ipmt_setParameter_txPower(int8_t txPower, dn_ipmt_setParameter_txPower_rpt* reply); +dn_err_t dn_ipmt_setParameter_joinDutyCycle(uint8_t dutyCycle, dn_ipmt_setParameter_joinDutyCycle_rpt* reply); +dn_err_t dn_ipmt_setParameter_eventMask(uint32_t eventMask, dn_ipmt_setParameter_eventMask_rpt* reply); +dn_err_t dn_ipmt_setParameter_OTAPLockout(bool mode, dn_ipmt_setParameter_OTAPLockout_rpt* reply); +dn_err_t dn_ipmt_setParameter_routingMode(bool mode, dn_ipmt_setParameter_routingMode_rpt* reply); +dn_err_t dn_ipmt_setParameter_powerSrcInfo(uint16_t maxStCurrent, uint8_t minLifetime, uint16_t currentLimit_0, uint16_t dischargePeriod_0, uint16_t rechargePeriod_0, uint16_t currentLimit_1, uint16_t dischargePeriod_1, uint16_t rechargePeriod_1, uint16_t currentLimit_2, uint16_t dischargePeriod_2, uint16_t rechargePeriod_2, dn_ipmt_setParameter_powerSrcInfo_rpt* reply); +dn_err_t dn_ipmt_setParameter_advKey(uint8_t* advKey, dn_ipmt_setParameter_advKey_rpt* reply); +dn_err_t dn_ipmt_setParameter_autoJoin(bool mode, dn_ipmt_setParameter_autoJoin_rpt* reply); +dn_err_t dn_ipmt_getParameter_macAddress(dn_ipmt_getParameter_macAddress_rpt* reply); +dn_err_t dn_ipmt_getParameter_networkId(dn_ipmt_getParameter_networkId_rpt* reply); +dn_err_t dn_ipmt_getParameter_txPower(dn_ipmt_getParameter_txPower_rpt* reply); +dn_err_t dn_ipmt_getParameter_joinDutyCycle(dn_ipmt_getParameter_joinDutyCycle_rpt* reply); +dn_err_t dn_ipmt_getParameter_eventMask(dn_ipmt_getParameter_eventMask_rpt* reply); +dn_err_t dn_ipmt_getParameter_moteInfo(dn_ipmt_getParameter_moteInfo_rpt* reply); +dn_err_t dn_ipmt_getParameter_netInfo(dn_ipmt_getParameter_netInfo_rpt* reply); +dn_err_t dn_ipmt_getParameter_moteStatus(dn_ipmt_getParameter_moteStatus_rpt* reply); +dn_err_t dn_ipmt_getParameter_time(dn_ipmt_getParameter_time_rpt* reply); +dn_err_t dn_ipmt_getParameter_charge(dn_ipmt_getParameter_charge_rpt* reply); +dn_err_t dn_ipmt_getParameter_testRadioRxStats(dn_ipmt_getParameter_testRadioRxStats_rpt* reply); +dn_err_t dn_ipmt_getParameter_OTAPLockout(dn_ipmt_getParameter_OTAPLockout_rpt* reply); +dn_err_t dn_ipmt_getParameter_moteId(dn_ipmt_getParameter_moteId_rpt* reply); +dn_err_t dn_ipmt_getParameter_ipv6Address(dn_ipmt_getParameter_ipv6Address_rpt* reply); +dn_err_t dn_ipmt_getParameter_routingMode(dn_ipmt_getParameter_routingMode_rpt* reply); +dn_err_t dn_ipmt_getParameter_appInfo(dn_ipmt_getParameter_appInfo_rpt* reply); +dn_err_t dn_ipmt_getParameter_powerSrcInfo(dn_ipmt_getParameter_powerSrcInfo_rpt* reply); +dn_err_t dn_ipmt_getParameter_autoJoin(dn_ipmt_getParameter_autoJoin_rpt* reply); +dn_err_t dn_ipmt_join(dn_ipmt_join_rpt* reply); +dn_err_t dn_ipmt_disconnect(dn_ipmt_disconnect_rpt* reply); +dn_err_t dn_ipmt_reset(dn_ipmt_reset_rpt* reply); +dn_err_t dn_ipmt_lowPowerSleep(dn_ipmt_lowPowerSleep_rpt* reply); +dn_err_t dn_ipmt_testRadioRx(uint16_t channelMask, uint16_t time, uint8_t stationId, dn_ipmt_testRadioRx_rpt* reply); +dn_err_t dn_ipmt_clearNV(dn_ipmt_clearNV_rpt* reply); +dn_err_t dn_ipmt_requestService(uint16_t destAddr, uint8_t serviceType, uint32_t value, dn_ipmt_requestService_rpt* reply); +dn_err_t dn_ipmt_getServiceInfo(uint16_t destAddr, uint8_t type, dn_ipmt_getServiceInfo_rpt* reply); +dn_err_t dn_ipmt_openSocket(uint8_t protocol, dn_ipmt_openSocket_rpt* reply); +dn_err_t dn_ipmt_closeSocket(uint8_t socketId, dn_ipmt_closeSocket_rpt* reply); +dn_err_t dn_ipmt_bindSocket(uint8_t socketId, uint16_t port, dn_ipmt_bindSocket_rpt* reply); +dn_err_t dn_ipmt_sendTo(uint8_t socketId, uint8_t* destIP, uint16_t destPort, uint8_t serviceType, uint8_t priority, uint16_t packetId, uint8_t* payload, uint8_t payloadLen, dn_ipmt_sendTo_rpt* reply); +dn_err_t dn_ipmt_search(dn_ipmt_search_rpt* reply); +dn_err_t dn_ipmt_testRadioTxExt(uint8_t testType, uint16_t chanMask, uint16_t repeatCnt, int8_t txPower, uint8_t seqSize, uint8_t pkLen_1, uint16_t delay_1, uint8_t pkLen_2, uint16_t delay_2, uint8_t pkLen_3, uint16_t delay_3, uint8_t pkLen_4, uint16_t delay_4, uint8_t pkLen_5, uint16_t delay_5, uint8_t pkLen_6, uint16_t delay_6, uint8_t pkLen_7, uint16_t delay_7, uint8_t pkLen_8, uint16_t delay_8, uint8_t pkLen_9, uint16_t delay_9, uint8_t pkLen_10, uint16_t delay_10, uint8_t stationId, dn_ipmt_testRadioTxExt_rpt* reply); +dn_err_t dn_ipmt_zeroize(dn_ipmt_zeroize_rpt* reply); +dn_err_t dn_ipmt_socketInfo(uint8_t index, dn_ipmt_socketInfo_rpt* reply); + +#ifdef __cplusplus +} +#endif + +#endif +