Modules#

EmberGpAddress

EmberGpSinkAddress

EmberGpSinkGroup

EmberGpSinkListEntry

EmberGpProxyTableEntry

EmberGpSinkTableEntry

EmberCGpAddress

EmberGpProxyClusterAttributes

EmberGpTxQueueEntry

EmberGpApplicationInfo

EmberGpAttributeRecord

EmberGpDataPointDescriptor

EmberGpReportDescriptor

EmberGpSwitchInformation

EmberGpGenericSwitchData

EmberGpTranslationTableAdditionalInfoBlockOptionRecordField

Zigbee Green Power types and defines. See greenpower for documentation.

License#

Copyright 2018 Silicon Laboratories Inc. www.silabs.com

The licensor of this software is Silicon Laboratories Inc. Your use of this software is governed by the terms of Silicon Labs Master Software License Agreement (MSLA) available at www.silabs.com/about-us/legal/master-software-license-agreement. This software is distributed to you in Source Code format and is governed by the sections of the MSLA applicable to Source Code.

/***************************************************************************/
#ifndef SILABS_GP_TYPES_H
#define SILABS_GP_TYPES_H

// Mask used in the Gp Ep Incoming Message Hadler to pass bidirectional information
// Incoming GPDF has rxAfterTx bit set
#define EMBER_GP_BIDIRECTION_INFO_RX_AFTER_TX_MASK        0x01
// A tx queue is available at gp stub to hold an outgoing GPDF
#define EMBER_GP_BIDIRECTION_INFO_TX_QUEUE_AVAILABLE_MASK 0x02
typedef uint32_t EmberGpSourceId;
typedef uint32_t EmberGpSecurityFrameCounter;
typedef uint32_t EmberGpMic;

#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberGpSecurityLevel
#else
typedef uint8_t EmberGpSecurityLevel;
enum
#endif
{
  EMBER_GP_SECURITY_LEVEL_NONE = 0x00,
  EMBER_GP_SECURITY_LEVEL_RESERVED = 0x01,
  EMBER_GP_SECURITY_LEVEL_FC_MIC = 0x02,
  EMBER_GP_SECURITY_LEVEL_FC_MIC_ENCRYPTED = 0x03,
};

#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberGpKeyType
#else
typedef uint8_t EmberGpKeyType;
enum
#endif
{
  EMBER_GP_SECURITY_KEY_NONE = 0x00,
  EMBER_GP_SECURITY_KEY_NWK = 0x01,
  EMBER_GP_SECURITY_KEY_GPD_GROUP = 0x02,
  EMBER_GP_SECURITY_KEY_NWK_DERIVED = 0x03,
  EMBER_GP_SECURITY_KEY_GPD_OOB = 0x04,
  EMBER_GP_SECURITY_KEY_GPD_DERIVED = 0x07,
};

#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberGpApplicationId
#else
typedef uint8_t EmberGpApplicationId;
enum
#endif
{
  EMBER_GP_APPLICATION_SOURCE_ID = 0x00,
  EMBER_GP_APPLICATION_IEEE_ADDRESS = 0x02,
};

#define EMBER_GP_APPLICATION_ID_MASK 0x03
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberGpProxyTableEntryStatus
#else
typedef uint8_t EmberGpProxyTableEntryStatus;
enum
#endif
{
  EMBER_GP_PROXY_TABLE_ENTRY_STATUS_ACTIVE = 0x01,
  EMBER_GP_PROXY_TABLE_ENTRY_STATUS_UNUSED = 0xFF,
};

#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberGpSinkTableEntryStatus
#else
typedef uint8_t EmberGpSinkTableEntryStatus;
enum
#endif
{
  EMBER_GP_SINK_TABLE_ENTRY_STATUS_ACTIVE = 0x01,
  EMBER_GP_SINK_TABLE_ENTRY_STATUS_UNUSED = 0xFF,
};

typedef struct {
  union {
    EmberEUI64 gpdIeeeAddress;
    EmberGpSourceId sourceId;
  } id;
  EmberGpApplicationId applicationId;
  uint8_t endpoint;
} EmberGpAddress;

typedef enum {
  // Sink Type is Full Unicast
  EMBER_GP_SINK_TYPE_FULL_UNICAST,
  // Sink Type is Derived groupcast, the group Id is derived from the GpdId during commissioning.
  // The sink is added to the APS group with that groupId.
  EMBER_GP_SINK_TYPE_D_GROUPCAST,
  // Sink type EMBER_GP_SINK_TYPE_GROUPCAST, the groupId can
  // be obtained from the APS group table or from the sink table.
  EMBER_GP_SINK_TYPE_GROUPCAST,
  // Sink Type is Light Weight Unicast.
  EMBER_GP_SINK_TYPE_LW_UNICAST,

  EMBER_GP_SINK_TYPE_UNUSED = 0xFF
} EmberGpSinkType;

typedef struct {
  EmberEUI64 sinkEUI;
  EmberNodeId sinkNodeId;
} EmberGpSinkAddress;

typedef struct {
  uint16_t groupID;
  uint16_t alias;
} EmberGpSinkGroup;

typedef struct {
  EmberGpSinkType type;

  union {
    EmberGpSinkAddress unicast;
    EmberGpSinkGroup groupcast;
    EmberGpSinkGroup groupList;   // Entry for Sink Group List
  } target;
} EmberGpSinkListEntry;

//minimum required by the spec is 2
#define GP_SINK_LIST_ENTRIES 2

// The size of the SinkList entries in sink table in format of octet string that has a format of {<1 byte length>, <n bytes for sink groups>}
#define GP_SIZE_OF_SINK_LIST_ENTRIES_OCTET_STRING (1 + (GP_SINK_LIST_ENTRIES * (sizeof(EmberGpSinkGroup))))

typedef struct {
  EmberGpProxyTableEntryStatus status;
  uint32_t options;
  EmberGpAddress gpd;
  EmberNodeId assignedAlias;
  uint8_t securityOptions;
  EmberGpSecurityFrameCounter gpdSecurityFrameCounter;
  EmberKeyData gpdKey;
  EmberGpSinkListEntry sinkList[GP_SINK_LIST_ENTRIES];
  uint8_t groupcastRadius;
  uint8_t searchCounter;
} EmberGpProxyTableEntry;

typedef struct {
  EmberGpSinkTableEntryStatus status;
  uint16_t options;
  EmberGpAddress gpd;
  uint8_t deviceId;
  EmberGpSinkListEntry sinkList[GP_SINK_LIST_ENTRIES];
  EmberNodeId assignedAlias;
  uint8_t groupcastRadius;
  uint8_t securityOptions;
  EmberGpSecurityFrameCounter gpdSecurityFrameCounter;
  EmberKeyData gpdKey;
} EmberGpSinkTableEntry;

//typedef  EmberGpProxyTableEntry EmberGpSinkTableEntry;

#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberCGpTxOption
#else
typedef uint8_t EmberCGpTxOption;
enum
#endif
{
  EMBER_CGP_TX_OPTION_NONE = 0x00,
  EMBER_CGP_TX_OPTION_USE_CSMA_CA = 0x01,
  EMBER_CGP_TX_OPTION_USE_MAC_ACK = 0x02,
  EMBER_CGP_TX_OPTION_RESERVED = 0xFC,
};

#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberCGpAddressMode
#else
typedef uint8_t EmberCGpAddressMode;
enum
#endif
{
  EMBER_CGP_ADDRESS_MODE_NONE = 0x00,
  EMBER_CGP_ADDRESS_MODE_RESERVED = 0x01,
  EMBER_CGP_ADDRESS_MODE_SHORT = 0x02,
  EMBER_CGP_ADDRESS_MODE_EXTENDED = 0x03,
};

typedef struct {
  union {
    EmberNodeId shortId;
    EmberEUI64 extendedId;
  } address;
  EmberPanId panId;
  EmberCGpAddressMode mode;
} EmberCGpAddress;

/*S @brief Options to use when sending a message. */
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberDGpTxOption
#else
typedef uint8_t EmberDGpTxOption;
enum
#endif
{
  EMBER_DGP_TX_OPTION_NONE = 0x00,
  EMBER_DGP_TX_OPTION_USE_GP_TX_QUEUE = 0x01,
  EMBER_DGP_TX_OPTION_USE_CSMA_CA = 0x02,
  EMBER_DGP_TX_OPTION_USE_MAC_ACK = 0x04,
  EMBER_DGP_TX_OPTION_FRAME_TYPE_DATA = 0x00,
  EMBER_DGP_TX_OPTION_FRAME_TYPE_MAINTENANCE = 0x08,
  EMBER_DGP_TX_OPTION_RESERVED = 0xE0,
};

typedef struct {
  uint8_t foo;
} EmberGpProxyClusterAttributes;

typedef struct {
  bool inUse;
  bool useCca;
  EmberGpAddress addr;
  uint8_t gpdCommandId;
  EmberMessageBuffer asdu;
  uint8_t gpepHandle;
  uint16_t queueEntryLifetimeMs;
} EmberGpTxQueueEntry;

//these defines are ugly, but there are a bunch of callbacks that take the same set of arguments
//while the design is still in flux, it makes sense to only have one place to change them

#define GP_PARAMS                         \
  EmberStatus status,                     \
  uint8_t gpdLink,                        \
  uint8_t sequenceNumber,                 \
  EmberGpAddress * addr,                  \
  EmberGpSecurityLevel gpdfSecurityLevel, \
  EmberGpKeyType gpdfSecurityKeyType,     \
  bool autoCommissioning,                 \
  uint8_t bidirectionalInfo,              \
  uint32_t gpdSecurityFrameCounter,       \
  uint8_t gpdCommandId,                   \
  uint32_t mic,                           \
  uint8_t proxyTableIndex,                \
  uint8_t gpdCommandPayloadLength,        \
  uint8_t * gpdCommandPayload

#define GP_ARGS            \
  status,                  \
  gpdLink,                 \
  sequenceNumber,          \
  addr,                    \
  gpdfSecurityLevel,       \
  gpdfSecurityKeyType,     \
  autoCommissioning,       \
  bidirectionalInfo,       \
  gpdSecurityFrameCounter, \
  gpdCommandId,            \
  mic,                     \
  proxyTableIndex,         \
  gpdCommandPayloadLength, \
  gpdCommandPayload

#define GP_UNUSED_ARGS           \
  (void)status;                  \
  (void)gpdLink;                 \
  (void)sequenceNumber;          \
  (void)addr;                    \
  (void)gpdfSecurityLevel;       \
  (void)gpdfSecurityKeyType;     \
  (void)autoCommissioning;       \
  (void)rxAfterTx;               \
  (void)gpdSecurityFrameCounter; \
  (void)gpdCommandId;            \
  (void)mic;                     \
  (void)proxyTableIndex;         \
  (void)gpdCommandPayloadLength; \
  (void)gpdCommandPayload;

#define GP_PROXY_TABLE_OPTIONS_IN_RANGE (BIT(10))

//3 consumed by device id, options, and app info byte
#define GP_COMMISSIONING_MAX_BYTES (55 - 3)

typedef struct {
  uint8_t deviceId;
  uint8_t applInfoBitmap;
  uint16_t manufacturerId;
  uint16_t modelId;
  uint8_t numberOfGpdCommands;
  uint8_t gpdCommands[GP_COMMISSIONING_MAX_BYTES - 1];
  uint8_t numberOfPairedEndpoints;
  uint8_t pairedEndpoints[GP_COMMISSIONING_MAX_BYTES - 1];
  uint8_t numberOfGpdClientCluster;
  uint8_t numberOfGpdServerCluster;
  uint16_t serverClusters[15];
  uint16_t clientClusters[15];
} EmberGpApplicationInfo;

// GP types for the Multisensor Extn. and CAR
// Switch Information and Sensor type
typedef struct {
  uint16_t              attributeID;
  uint8_t               attributeDataType;
  // careful it is "N-1", total number of octet -1 of following attrib record field
  // thus is there is 0b0000 indicates that 1 octet will follows, this allow sink
  // to skip octets base on AttributID
  // after read AttributID the sink could go directly to next attribute if it doesn't support this one
  uint8_t               remainingAttributRecordLength; // on 4 bits
  uint8_t               reported;
  uint8_t               attrValuePresent;

  uint8_t               attrOffsetWithinReport; // demarre a 0
  // TODO change "attrValue" from u32 to a pointer, as the data could be up to a string
  // the field "attributeDataType" tell with format it is, among  more than 55 possibilities)
  // so a add a private field which just tell the length of attrValue to easier
  // process it
  uint32_t              attrValue;
  uint8_t               attrValueSize;
} EmberGpAttributeRecord;

typedef struct {
  // careful it is "N-1", if there is 2 attr record then nbAttrRecord=1 and not 2 !
  uint8_t               nbAttrRecord;
  uint8_t               clientServer;
  uint8_t               ManIdPresent;
  uint8_t               datapointOptions;
  uint16_t              clusterID;
  uint16_t              manufacturerID;
  EmberGpAttributeRecord attrRecord;
} EmberGpDataPointDescriptor;

typedef struct {
  uint8_t               repId;
  uint8_t               reportOptions;
  uint16_t              timeoutPeriod;
  uint8_t               totalLength;
  EmberGpDataPointDescriptor  dataPoint;
} EmberGpReportDescriptor;

typedef struct {
  uint8_t switchInfoLength;
  uint8_t nbOfContacts;
  uint8_t switchType;
  uint8_t currentContact;
  uint8_t savedContact;
}EmberGpSwitchInformation;

#define TT_NB_MAX_OPTION_RECORD                                         (8)
typedef struct {
  // button information of the Generic switch,
  // tell the contact saved
  uint8_t       currentStatus;
  // tell how to evaluate contact received, thus bitmask only depend of NbContact of this GPD
  uint8_t       contactBitmask;
} EmberGpGenericSwitchData;

typedef struct {
  uint8_t       totalLengthOfAddInfoBlock;
  uint8_t       optionSelector;
  union {
    struct {
      uint8_t       reportIdentifier;
      uint8_t       attrOffsetWithinReport;
      uint16_t      clusterID;
      uint16_t      attributeID;
      uint8_t       attributeDataType;
      uint8_t       attributeOptions; //clientServer bit0 manufacturerIdPresent bit1
      uint16_t      manufacturerID;
    } compactAttr;
    struct {
      // button information of the Generic switch,
      // tell the contact saved
      uint8_t       contactStatus;
      // tell how to evaluate contact received, thus bitmask only depend of NbContact of this GPD
      uint8_t       contactBitmask;
    } genericSwitch;
  } optionData;//EmberGpTranslationTableAdditionalInfoBlockOptionRecordOptionDataField;
} EmberGpTranslationTableAdditionalInfoBlockOptionRecordField;


#define GP_GPD_SRC_ID_FOR_CAHNNEL_CONFIG 0x00000000
#define GP_GPD_SRC_ID_WILDCARD           0xFFFFFFFF

// GPD SrcID reserved values
#define GP_GPD_SRC_ID_RESERVED_0 0x00000000
#define GP_GPD_SRC_ID_RESERVED_FFFFFF9 0xFFFFFFF9
#define GP_GPD_SRC_ID_RESERVED_FFFFFFA 0xFFFFFFFA
#define GP_GPD_SRC_ID_RESERVED_FFFFFFB 0xFFFFFFFB
#define GP_GPD_SRC_ID_RESERVED_FFFFFFC 0xFFFFFFFC
#define GP_GPD_SRC_ID_RESERVED_FFFFFFD 0xFFFFFFFD
#define GP_GPD_SRC_ID_RESERVED_FFFFFFE 0xFFFFFFFE

#define GP_DERIVED_GROUP_ALIAS_NOT_USED 0xffff

#define GP_DMIN_B 32
#define GP_DMIN_U 5
#define GP_DMAX 100

EmberStatus emberDGpSend(bool action,
                         bool useCca,
                         EmberGpAddress *addr,
                         uint8_t gpdCommandId,
                         uint8_t gpdAsduLength,
                         uint8_t const *gpdAsdu,
                         uint8_t gpepHandle,
                         uint16_t gpTxQueueEntryLifetimeMs);

bool emberGpProxyTableProcessGpPairing(uint32_t options,
                                       EmberGpAddress* addr,
                                       uint8_t commMode,
                                       uint16_t sinkNwkAddress,
                                       uint16_t sinkGroupId,
                                       uint16_t assignedAlias,
                                       uint8_t* sinkIeeeAddress,
                                       EmberKeyData *gpdKey,
                                       uint32_t gpdSecurityFrameCounter,
                                       uint8_t forwardingRadius);

uint8_t emberGpProxyTableLookup(EmberGpAddress *addr);
EmberStatus emberGpProxyTableGetEntry(uint8_t proxyIndex,
                                      EmberGpProxyTableEntry *entry);

EmberStatus emberGpSinkTableGetEntry(uint8_t sinkIndex,
                                     EmberGpSinkTableEntry *entry);
uint8_t emberGpSinkTableLookup(EmberGpAddress *addr);
void emberGpSinkTableClearAll(void);

EmberStatus emberGpSinkTableSetEntry(uint8_t sinkTableIndex,
                                     EmberGpSinkTableEntry *entry);
uint8_t emberGpSinkTableFindOrAllocateEntry(EmberGpAddress *addr);
void emberGpSinkTableRemoveEntry(uint8_t index);
void emberGpSinkTableInit(void);
void emberGpSinkTableSetSecurityFrameCounter(uint8_t index,
                                             uint32_t sfc);
// Tx Queue APIs
MessageBufferQueue * emberGpGetTxQueueHead(void);
void emberGpSetMaxTxQueueEntry(uint16_t maxEntries);
uint16_t emberGetGpMaxTxQListCount(void);
uint16_t emberGetGpTxQListCount(void);
EmberMessageBuffer emberGpGetTxQueueEntryFromQueue(EmberGpTxQueueEntry *txQueue,
                                                   uint8_t *data,
                                                   uint16_t *dataLength,
                                                   uint16_t allocatedDataLength);
EmberMessageBuffer emberGpAddGpTxQueueEntryWithPayload(EmberGpTxQueueEntry *txQueue,
                                                       uint8_t *data,
                                                       uint16_t dataLength);
bool emberGpRemoveFromTxQueue(EmberGpTxQueueEntry *txQueue);
void emberGpClearTxQueue(void);

#endif // SILABS_GP_TYPES_H

GP Types#

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define
GP_SIZE_OF_SINK_LIST_ENTRIES_OCTET_STRING (1 + (GP_SINK_LIST_ENTRIES * (sizeof(EmberGpSinkGroup))))

Options to use when sending a message.

#define
GP_PARAMS undefined

Options to use when sending a message.

#define
GP_ARGS undefined

Options to use when sending a message.

#define
GP_UNUSED_ARGS undefined

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

#define

Options to use when sending a message.

enum
EMBER_GP_SECURITY_LEVEL_NONE = 0x00
EMBER_GP_SECURITY_LEVEL_RESERVED = 0x01
EMBER_GP_SECURITY_LEVEL_FC_MIC = 0x02
EMBER_GP_SECURITY_LEVEL_FC_MIC_ENCRYPTED = 0x03
}

Options to use when sending a message.

enum
EMBER_GP_SECURITY_KEY_NONE = 0x00
EMBER_GP_SECURITY_KEY_NWK = 0x01
EMBER_GP_SECURITY_KEY_GPD_GROUP = 0x02
EMBER_GP_SECURITY_KEY_NWK_DERIVED = 0x03
EMBER_GP_SECURITY_KEY_GPD_OOB = 0x04
EMBER_GP_SECURITY_KEY_GPD_DERIVED = 0x07
}

Options to use when sending a message.

enum
EMBER_GP_APPLICATION_SOURCE_ID = 0x00
EMBER_GP_APPLICATION_IEEE_ADDRESS = 0x02
}

Options to use when sending a message.

enum
EMBER_GP_PROXY_TABLE_ENTRY_STATUS_ACTIVE = 0x01
EMBER_GP_PROXY_TABLE_ENTRY_STATUS_UNUSED = 0xFF
}

GP proxy table entry status.

enum
EMBER_GP_SINK_TABLE_ENTRY_STATUS_ACTIVE = 0x01
EMBER_GP_SINK_TABLE_ENTRY_STATUS_UNUSED = 0xFF
}

GP sink table entry status.

enum
EMBER_GP_SINK_TYPE_FULL_UNICAST
EMBER_GP_SINK_TYPE_D_GROUPCAST
EMBER_GP_SINK_TYPE_GROUPCAST
EMBER_GP_SINK_TYPE_LW_UNICAST
EMBER_GP_SINK_TYPE_UNUSED = 0xFF
}

Options to use when sending a message.

enum
EMBER_CGP_TX_OPTION_NONE = 0x00
EMBER_CGP_TX_OPTION_USE_CSMA_CA = 0x01
EMBER_CGP_TX_OPTION_USE_MAC_ACK = 0x02
EMBER_CGP_TX_OPTION_RESERVED = 0xFC
}

GP sink table entry status.

enum
EMBER_CGP_ADDRESS_MODE_NONE = 0x00
EMBER_CGP_ADDRESS_MODE_RESERVED = 0x01
EMBER_CGP_ADDRESS_MODE_SHORT = 0x02
EMBER_CGP_ADDRESS_MODE_EXTENDED = 0x03
}

Addressing modes for sending and receiving a message.

enum
EMBER_DGP_TX_OPTION_NONE = 0x00
EMBER_DGP_TX_OPTION_USE_GP_TX_QUEUE = 0x01
EMBER_DGP_TX_OPTION_USE_CSMA_CA = 0x02
EMBER_DGP_TX_OPTION_USE_MAC_ACK = 0x04
EMBER_DGP_TX_OPTION_FRAME_TYPE_DATA = 0x00
EMBER_DGP_TX_OPTION_FRAME_TYPE_MAINTENANCE = 0x08
EMBER_DGP_TX_OPTION_RESERVED = 0xE0
}

Options to use when sending a message.

typedef uint32_t
typedef uint32_t

Options to use when sending a message.

emberDGpSend(bool action, bool useCca, EmberGpAddress *addr, uint8_t gpdCommandId, uint8_t gpdAsduLength, uint8_t const *gpdAsdu, uint8_t gpepHandle, uint16_t gpTxQueueEntryLifetimeMs)

Options to use when sending a message.

bool
emberGpProxyTableProcessGpPairing(uint32_t options, EmberGpAddress *addr, uint8_t commMode, uint16_t sinkNwkAddress, uint16_t sinkGroupId, uint16_t assignedAlias, uint8_t *sinkIeeeAddress, EmberKeyData *gpdKey, uint32_t gpdSecurityFrameCounter, uint8_t forwardingRadius)

Options to use when sending a message.

uint8_t
emberGpProxyTableLookup(EmberGpAddress *addr)

Options to use when sending a message.

emberGpProxyTableGetEntry(uint8_t proxyIndex, EmberGpProxyTableEntry *entry)

Options to use when sending a message.

emberGpSinkTableGetEntry(uint8_t sinkIndex, EmberGpSinkTableEntry *entry)

Options to use when sending a message.

uint8_t
emberGpSinkTableLookup(EmberGpAddress *addr)

Options to use when sending a message.

void

Options to use when sending a message.

emberGpSinkTableSetEntry(uint8_t sinkTableIndex, EmberGpSinkTableEntry *entry)

Options to use when sending a message.

uint8_t

Options to use when sending a message.

void

Options to use when sending a message.

void

Options to use when sending a message.

void
emberGpSinkTableSetSecurityFrameCounter(uint8_t index, uint32_t sfc)

Options to use when sending a message.

Options to use when sending a message.

void
emberGpSetMaxTxQueueEntry(uint16_t maxEntries)

Options to use when sending a message.

uint16_t

Options to use when sending a message.

uint16_t

Options to use when sending a message.

emberGpGetTxQueueEntryFromQueue(EmberGpTxQueueEntry *txQueue, uint8_t *data, uint16_t *dataLength, uint16_t allocatedDataLength)

Options to use when sending a message.

emberGpAddGpTxQueueEntryWithPayload(EmberGpTxQueueEntry *txQueue, uint8_t *data, uint16_t dataLength)

Options to use when sending a message.

bool
emberGpRemoveFromTxQueue(EmberGpTxQueueEntry *txQueue)

Options to use when sending a message.

void

Options to use when sending a message.

GP Types Documentation#

EMBER_GP_APPLICATION_ID_MASK#

#define EMBER_GP_APPLICATION_ID_MASK
Value:
0x03

Options to use when sending a message.


Definition at line 96 of file stack/include/gp-types.h

GP_SINK_LIST_ENTRIES#

#define GP_SINK_LIST_ENTRIES
Value:
2

Options to use when sending a message.


Definition at line 191 of file stack/include/gp-types.h

GP_SIZE_OF_SINK_LIST_ENTRIES_OCTET_STRING#

#define GP_SIZE_OF_SINK_LIST_ENTRIES_OCTET_STRING
Value:
(1 + (GP_SINK_LIST_ENTRIES * (sizeof(EmberGpSinkGroup))))

Options to use when sending a message.


Definition at line 194 of file stack/include/gp-types.h

GP_PARAMS#

#define GP_PARAMS
Value:
EmberStatus status, \
uint8_t gpdLink, \
uint8_t sequenceNumber, \
EmberGpAddress * addr, \
EmberGpSecurityLevel gpdfSecurityLevel, \
EmberGpKeyType gpdfSecurityKeyType, \
bool autoCommissioning, \
uint8_t bidirectionalInfo, \
uint32_t gpdSecurityFrameCounter, \
uint8_t gpdCommandId, \
uint32_t mic, \
uint8_t proxyTableIndex, \
uint8_t gpdCommandPayloadLength, \
uint8_t * gpdCommandPayload

Options to use when sending a message.


Definition at line 394 of file stack/include/gp-types.h

GP_ARGS#

#define GP_ARGS
Value:
status, \
gpdLink, \
sequenceNumber, \
addr, \
gpdfSecurityLevel, \
gpdfSecurityKeyType, \
autoCommissioning, \
bidirectionalInfo, \
gpdSecurityFrameCounter, \
gpdCommandId, \
mic, \
proxyTableIndex, \
gpdCommandPayloadLength, \
gpdCommandPayload

Options to use when sending a message.


Definition at line 410 of file stack/include/gp-types.h

GP_UNUSED_ARGS#

#define GP_UNUSED_ARGS
Value:
(void)status; \
(void)gpdLink; \
(void)sequenceNumber; \
(void)addr; \
(void)gpdfSecurityLevel; \
(void)gpdfSecurityKeyType; \
(void)autoCommissioning; \
(void)rxAfterTx; \
(void)gpdSecurityFrameCounter; \
(void)gpdCommandId; \
(void)mic; \
(void)proxyTableIndex; \
(void)gpdCommandPayloadLength; \
(void)gpdCommandPayload;

Options to use when sending a message.


Definition at line 426 of file stack/include/gp-types.h

GP_PROXY_TABLE_OPTIONS_IN_RANGE#

#define GP_PROXY_TABLE_OPTIONS_IN_RANGE
Value:
(BIT(10))

Options to use when sending a message.


Definition at line 442 of file stack/include/gp-types.h

GP_COMMISSIONING_MAX_BYTES#

#define GP_COMMISSIONING_MAX_BYTES
Value:
(55 - 3)

Options to use when sending a message.


Definition at line 445 of file stack/include/gp-types.h

TT_NB_MAX_OPTION_RECORD#

#define TT_NB_MAX_OPTION_RECORD
Value:
(8)

Options to use when sending a message.


Definition at line 511 of file stack/include/gp-types.h

GP_GPD_SRC_ID_FOR_CAHNNEL_CONFIG#

#define GP_GPD_SRC_ID_FOR_CAHNNEL_CONFIG
Value:
0x00000000

Options to use when sending a message.


Definition at line 545 of file stack/include/gp-types.h

GP_GPD_SRC_ID_WILDCARD#

#define GP_GPD_SRC_ID_WILDCARD
Value:
0xFFFFFFFF

Options to use when sending a message.


Definition at line 546 of file stack/include/gp-types.h

GP_GPD_SRC_ID_RESERVED_0#

#define GP_GPD_SRC_ID_RESERVED_0
Value:
0x00000000

Options to use when sending a message.


Definition at line 549 of file stack/include/gp-types.h

GP_GPD_SRC_ID_RESERVED_FFFFFF9#

#define GP_GPD_SRC_ID_RESERVED_FFFFFF9
Value:
0xFFFFFFF9

Options to use when sending a message.


Definition at line 550 of file stack/include/gp-types.h

GP_GPD_SRC_ID_RESERVED_FFFFFFA#

#define GP_GPD_SRC_ID_RESERVED_FFFFFFA
Value:
0xFFFFFFFA

Options to use when sending a message.


Definition at line 551 of file stack/include/gp-types.h

GP_GPD_SRC_ID_RESERVED_FFFFFFB#

#define GP_GPD_SRC_ID_RESERVED_FFFFFFB
Value:
0xFFFFFFFB

Options to use when sending a message.


Definition at line 552 of file stack/include/gp-types.h

GP_GPD_SRC_ID_RESERVED_FFFFFFC#

#define GP_GPD_SRC_ID_RESERVED_FFFFFFC
Value:
0xFFFFFFFC

Options to use when sending a message.


Definition at line 553 of file stack/include/gp-types.h

GP_GPD_SRC_ID_RESERVED_FFFFFFD#

#define GP_GPD_SRC_ID_RESERVED_FFFFFFD
Value:
0xFFFFFFFD

Options to use when sending a message.


Definition at line 554 of file stack/include/gp-types.h

GP_GPD_SRC_ID_RESERVED_FFFFFFE#

#define GP_GPD_SRC_ID_RESERVED_FFFFFFE
Value:
0xFFFFFFFE

Options to use when sending a message.


Definition at line 555 of file stack/include/gp-types.h

GP_DERIVED_GROUP_ALIAS_NOT_USED#

#define GP_DERIVED_GROUP_ALIAS_NOT_USED
Value:
0xffff

Options to use when sending a message.


Definition at line 557 of file stack/include/gp-types.h

GP_DMIN_B#

#define GP_DMIN_B
Value:
32

Options to use when sending a message.


Definition at line 559 of file stack/include/gp-types.h

GP_DMIN_U#

#define GP_DMIN_U
Value:
5

Options to use when sending a message.


Definition at line 560 of file stack/include/gp-types.h

GP_DMAX#

#define GP_DMAX
Value:
100

Options to use when sending a message.


Definition at line 561 of file stack/include/gp-types.h

EmberGpSecurityLevel#

EmberGpSecurityLevel

Options to use when sending a message.

Enumerator
EMBER_GP_SECURITY_LEVEL_NONE

None

EMBER_GP_SECURITY_LEVEL_RESERVED

reserved

EMBER_GP_SECURITY_LEVEL_FC_MIC

4 Byte Frame Counter + 4 Byte MIC

EMBER_GP_SECURITY_LEVEL_FC_MIC_ENCRYPTED

4 Byte Frame Counter + 4 Byte MIC + encryption


Definition at line 48 of file stack/include/gp-types.h

EmberGpKeyType#

EmberGpKeyType

Options to use when sending a message.

Enumerator
EMBER_GP_SECURITY_KEY_NONE

None

EMBER_GP_SECURITY_KEY_NWK

reserved

EMBER_GP_SECURITY_KEY_GPD_GROUP
EMBER_GP_SECURITY_KEY_NWK_DERIVED
EMBER_GP_SECURITY_KEY_GPD_OOB
EMBER_GP_SECURITY_KEY_GPD_DERIVED

Definition at line 66 of file stack/include/gp-types.h

EmberGpApplicationId#

EmberGpApplicationId

Options to use when sending a message.

Enumerator
EMBER_GP_APPLICATION_SOURCE_ID

Source identifier.

EMBER_GP_APPLICATION_IEEE_ADDRESS

IEEE address.


Definition at line 84 of file stack/include/gp-types.h

EmberGpProxyTableEntryStatus#

EmberGpProxyTableEntryStatus

GP proxy table entry status.

Enumerator
EMBER_GP_PROXY_TABLE_ENTRY_STATUS_ACTIVE

The GP table entry is in use for a Proxy Table Entry.

EMBER_GP_PROXY_TABLE_ENTRY_STATUS_UNUSED

The proxy table entry is not in use.


Definition at line 101 of file stack/include/gp-types.h

EmberGpSinkTableEntryStatus#

EmberGpSinkTableEntryStatus

GP sink table entry status.

Enumerator
EMBER_GP_SINK_TABLE_ENTRY_STATUS_ACTIVE

The GP table entry is in use for a Sink Table Entry.

EMBER_GP_SINK_TABLE_ENTRY_STATUS_UNUSED

The proxy table entry is not in use.


Definition at line 121 of file stack/include/gp-types.h

EmberGpSinkType#

EmberGpSinkType

Options to use when sending a message.

Enumerator
EMBER_GP_SINK_TYPE_FULL_UNICAST
EMBER_GP_SINK_TYPE_D_GROUPCAST
EMBER_GP_SINK_TYPE_GROUPCAST
EMBER_GP_SINK_TYPE_LW_UNICAST
EMBER_GP_SINK_TYPE_UNUSED

Definition at line 155 of file stack/include/gp-types.h

EmberCGpTxOption#

EmberCGpTxOption

GP sink table entry status.

GP sink table entry status. TODO R E M O V E

Options to use when sending a message.

Enumerator
EMBER_CGP_TX_OPTION_NONE

No options.

EMBER_CGP_TX_OPTION_USE_CSMA_CA

Use CSMA/CA.

EMBER_CGP_TX_OPTION_USE_MAC_ACK

Use MAC ACK.

EMBER_CGP_TX_OPTION_RESERVED

Reserved.


Definition at line 298 of file stack/include/gp-types.h

EmberCGpAddressMode#

EmberCGpAddressMode

Addressing modes for sending and receiving a message.

Enumerator
EMBER_CGP_ADDRESS_MODE_NONE

No address (PAN identifier and address omitted).

EMBER_CGP_ADDRESS_MODE_RESERVED

Reserved.

EMBER_CGP_ADDRESS_MODE_SHORT

16-bit short address.

EMBER_CGP_ADDRESS_MODE_EXTENDED

64-bit extended address.


Definition at line 316 of file stack/include/gp-types.h

EmberDGpTxOption#

EmberDGpTxOption

Options to use when sending a message.

Enumerator
EMBER_DGP_TX_OPTION_NONE

No options.

EMBER_DGP_TX_OPTION_USE_GP_TX_QUEUE

Use gpTxQueue.

EMBER_DGP_TX_OPTION_USE_CSMA_CA

Use CSMA/CA.

EMBER_DGP_TX_OPTION_USE_MAC_ACK

Use MAC ACK.

EMBER_DGP_TX_OPTION_FRAME_TYPE_DATA

Data frame.

EMBER_DGP_TX_OPTION_FRAME_TYPE_MAINTENANCE

Maintenance frame.

EMBER_DGP_TX_OPTION_RESERVED

Reserved.


Definition at line 355 of file stack/include/gp-types.h

EmberGpSourceId#

typedef uint32_t EmberGpSourceId

32-bit source identifier.


Definition at line 41 of file stack/include/gp-types.h

EmberGpSecurityFrameCounter#

typedef uint32_t EmberGpSecurityFrameCounter

32-bit security frame counter


Definition at line 43 of file stack/include/gp-types.h

EmberGpMic#

typedef uint32_t EmberGpMic

Options to use when sending a message.


Definition at line 44 of file stack/include/gp-types.h

emberDGpSend#

EmberStatus emberDGpSend (bool action, bool useCca, EmberGpAddress * addr, uint8_t gpdCommandId, uint8_t gpdAsduLength, uint8_t const * gpdAsdu, uint8_t gpepHandle, uint16_t gpTxQueueEntryLifetimeMs)

Options to use when sending a message.

Parameters
N/Aaction
N/AuseCca
N/Aaddr
N/AgpdCommandId
N/AgpdAsduLength
N/AgpdAsdu
N/AgpepHandle
N/AgpTxQueueEntryLifetimeMs

Definition at line 563 of file stack/include/gp-types.h

emberGpProxyTableProcessGpPairing#

bool emberGpProxyTableProcessGpPairing (uint32_t options, EmberGpAddress * addr, uint8_t commMode, uint16_t sinkNwkAddress, uint16_t sinkGroupId, uint16_t assignedAlias, uint8_t * sinkIeeeAddress, EmberKeyData * gpdKey, uint32_t gpdSecurityFrameCounter, uint8_t forwardingRadius)

Options to use when sending a message.

Parameters
N/Aoptions
N/Aaddr
N/AcommMode
N/AsinkNwkAddress
N/AsinkGroupId
N/AassignedAlias
N/AsinkIeeeAddress
N/AgpdKey
N/AgpdSecurityFrameCounter
N/AforwardingRadius

Definition at line 572 of file stack/include/gp-types.h

emberGpProxyTableLookup#

uint8_t emberGpProxyTableLookup (EmberGpAddress * addr)

Options to use when sending a message.

Parameters
N/Aaddr

Definition at line 583 of file stack/include/gp-types.h

emberGpProxyTableGetEntry#

EmberStatus emberGpProxyTableGetEntry (uint8_t proxyIndex, EmberGpProxyTableEntry * entry)

Options to use when sending a message.

Parameters
N/AproxyIndex
N/Aentry

Definition at line 584 of file stack/include/gp-types.h

emberGpSinkTableGetEntry#

EmberStatus emberGpSinkTableGetEntry (uint8_t sinkIndex, EmberGpSinkTableEntry * entry)

Options to use when sending a message.

Parameters
N/AsinkIndex
N/Aentry

Definition at line 587 of file stack/include/gp-types.h

emberGpSinkTableLookup#

uint8_t emberGpSinkTableLookup (EmberGpAddress * addr)

Options to use when sending a message.

Parameters
N/Aaddr

Definition at line 589 of file stack/include/gp-types.h

emberGpSinkTableClearAll#

void emberGpSinkTableClearAll (void )

Options to use when sending a message.

Parameters
N/A

Definition at line 590 of file stack/include/gp-types.h

emberGpSinkTableSetEntry#

EmberStatus emberGpSinkTableSetEntry (uint8_t sinkTableIndex, EmberGpSinkTableEntry * entry)

Options to use when sending a message.

Parameters
N/AsinkTableIndex
N/Aentry

Definition at line 592 of file stack/include/gp-types.h

emberGpSinkTableFindOrAllocateEntry#

uint8_t emberGpSinkTableFindOrAllocateEntry (EmberGpAddress * addr)

Options to use when sending a message.

Parameters
N/Aaddr

Definition at line 594 of file stack/include/gp-types.h

emberGpSinkTableRemoveEntry#

void emberGpSinkTableRemoveEntry (uint8_t index)

Options to use when sending a message.

Parameters
N/Aindex

Definition at line 595 of file stack/include/gp-types.h

emberGpSinkTableInit#

void emberGpSinkTableInit (void )

Options to use when sending a message.

Parameters
N/A

Definition at line 596 of file stack/include/gp-types.h

emberGpSinkTableSetSecurityFrameCounter#

void emberGpSinkTableSetSecurityFrameCounter (uint8_t index, uint32_t sfc)

Options to use when sending a message.

Parameters
N/Aindex
N/Asfc

Definition at line 597 of file stack/include/gp-types.h

emberGpGetTxQueueHead#

MessageBufferQueue * emberGpGetTxQueueHead (void )

Options to use when sending a message.

Parameters
N/A

Definition at line 600 of file stack/include/gp-types.h

emberGpSetMaxTxQueueEntry#

void emberGpSetMaxTxQueueEntry (uint16_t maxEntries)

Options to use when sending a message.

Parameters
N/AmaxEntries

Definition at line 601 of file stack/include/gp-types.h

emberGetGpMaxTxQListCount#

uint16_t emberGetGpMaxTxQListCount (void )

Options to use when sending a message.

Parameters
N/A

Definition at line 602 of file stack/include/gp-types.h

emberGetGpTxQListCount#

uint16_t emberGetGpTxQListCount (void )

Options to use when sending a message.

Parameters
N/A

Definition at line 603 of file stack/include/gp-types.h

emberGpGetTxQueueEntryFromQueue#

EmberMessageBuffer emberGpGetTxQueueEntryFromQueue (EmberGpTxQueueEntry * txQueue, uint8_t * data, uint16_t * dataLength, uint16_t allocatedDataLength)

Options to use when sending a message.

Parameters
N/AtxQueue
N/Adata
N/AdataLength
N/AallocatedDataLength

Definition at line 604 of file stack/include/gp-types.h

emberGpAddGpTxQueueEntryWithPayload#

EmberMessageBuffer emberGpAddGpTxQueueEntryWithPayload (EmberGpTxQueueEntry * txQueue, uint8_t * data, uint16_t dataLength)

Options to use when sending a message.

Parameters
N/AtxQueue
N/Adata
N/AdataLength

Definition at line 608 of file stack/include/gp-types.h

emberGpRemoveFromTxQueue#

bool emberGpRemoveFromTxQueue (EmberGpTxQueueEntry * txQueue)

Options to use when sending a message.

Parameters
N/AtxQueue

Definition at line 611 of file stack/include/gp-types.h

emberGpClearTxQueue#

void emberGpClearTxQueue (void )

Options to use when sending a message.

Parameters
N/A

Definition at line 612 of file stack/include/gp-types.h

Macro Definition Documentation#

EMBER_GP_BIDIRECTION_INFO_RX_AFTER_TX_MASK#

#define EMBER_GP_BIDIRECTION_INFO_RX_AFTER_TX_MASK
Value:
0x01

Definition at line 33 of file stack/include/gp-types.h

EMBER_GP_BIDIRECTION_INFO_TX_QUEUE_AVAILABLE_MASK#

#define EMBER_GP_BIDIRECTION_INFO_TX_QUEUE_AVAILABLE_MASK
Value:
0x02

Definition at line 35 of file stack/include/gp-types.h