Price Common#
API and Callbacks for the Price Common Component.
This component provides common utility functions used by both the Price Server and Price Client components.
Modules#
API#
Return the best matching or other index to use for inserting new data.
Sort price-related data structures.
Update durations to avoid overlapping the next event.
Determine the time until the next index becomes active.
Find valid entries in the EmberAfPriceCommonInfo structure array.
Return the index of the active entry in the EmberAfPriceCommonInfo array.
Return the index to the most recent entry that will become active in the future.
Macros#
API Documentation#
emberAfPluginPriceCommonGetCommonMatchingOrUnusedIndex#
uint8_t emberAfPluginPriceCommonGetCommonMatchingOrUnusedIndex (EmberAfPriceCommonInfo * commonInfos, uint8_t numberOfEntries, uint32_t newIssuerEventId, uint32_t newStartTime, bool expireTimedOut)
Return the best matching or other index to use for inserting new data.
N/A | commonInfos | An array of EmberAfPriceCommonInfo structures whose data is used to find the best available index. |
N/A | numberOfEntries | The number of entries in the EmberAfPriceCommonInfo array. |
N/A | newIssuerEventId | The issuerEventId of the new data. This is used to see if a match is present. |
N/A | newStartTime | The startTime of the new data. |
N/A | expireTimedOut | Treats any timed-out entries as invalid if set to true. |
Returns
The best index - either a matching index, if found, or an invalid or timed out index.
113
of file app/framework/plugin/price-common/price-common.h
emberAfPluginPriceCommonSort#
void emberAfPluginPriceCommonSort (EmberAfPriceCommonInfo * commonInfos, uint8_t * dataArray, uint16_t dataArrayBlockSizeInByte, uint16_t dataArraySize)
Sort price-related data structures.
N/A | commonInfos | The destination address to which the command should be sent. |
N/A | dataArray | The source endpoint used in the transmission. |
N/A | dataArrayBlockSizeInByte | The source endpoint used in the transmission. |
N/A | dataArraySize | The source endpoint used in the transmission. |
This semi-generic sorting function can be used to sort all structures that utilizes the EmberAfPriceCommonInfo data type.
131
of file app/framework/plugin/price-common/price-common.h
emberAfPluginPriceCommonUpdateDurationForOverlappingEvents#
void emberAfPluginPriceCommonUpdateDurationForOverlappingEvents (EmberAfPriceCommonInfo * commonInfos, uint8_t numberOfEntries)
Update durations to avoid overlapping the next event.
N/A | commonInfos | An array of EmberAfPriceCommonInfo structures that will be evaluated. |
N/A | numberOfEntries | The number of entries in the EmberAfPriceCommonInfo array. |
143
of file app/framework/plugin/price-common/price-common.h
emberAfPluginPriceCommonSecondsUntilSecondIndexActive#
uint32_t emberAfPluginPriceCommonSecondsUntilSecondIndexActive (EmberAfPriceCommonInfo * commonInfos, uint8_t numberOfEntries)
Determine the time until the next index becomes active.
N/A | commonInfos | An array of EmberAfPriceCommonInfo structures that will be evaluated. |
N/A | numberOfEntries | The number of entries in the EmberAfPriceCommonInfo array. |
This function assumes the commonInfos[] array is already sorted by startTime from earliest to latest.
155
of file app/framework/plugin/price-common/price-common.h
emberAfPluginPriceCommonFindValidEntries#
uint8_t emberAfPluginPriceCommonFindValidEntries (uint8_t * validEntries, uint8_t numberOfEntries, EmberAfPriceCommonInfo * commonInfos, uint32_t earliestStartTime, uint32_t minIssuerEventId, uint8_t numberOfCommands)
Find valid entries in the EmberAfPriceCommonInfo structure array.
N/A | validEntries | An array of the same size as the EmberAfPriceCommonInfo array that will store the valid flag for each entry (true or false). |
N/A | numberOfEntries | The number of entries in the validEntries array and the commonInfos array. |
N/A | commonInfos | The EmberAfPriceCommonInfo array that will be searched for valid entries. |
N/A | earliestStartTime | A minimum start time such that all valid entries have a start time greater than or equal to this value. @minIssuerEventId A minimum event ID such that all valid entries have an issuerEventId greater than or equal to this. @numberOfRequestedCommands The maximum number of valid entries to be returned. |
N/A | minIssuerEventId | |
N/A | numberOfCommands |
Returns
The number of valid commands found in the commonInfos array.
173
of file app/framework/plugin/price-common/price-common.h
emberAfPluginPriceCommonServerGetActiveIndex#
uint8_t emberAfPluginPriceCommonServerGetActiveIndex (EmberAfPriceCommonInfo * commonInfos, uint8_t numberOfEntries)
Return the index of the active entry in the EmberAfPriceCommonInfo array.
N/A | commonInfos | The EmberAfPriceCommonInfo array that will be searched for an active entry. |
N/A | numberOfEntries | The number of entries in the commonInfo array. |
Search through array for the most recent active entry. "Issuer Event Id" has higher priority than "start time".
Returns
The index of the active entry, or 0xFF if an active entry is not found.
191
of file app/framework/plugin/price-common/price-common.h
emberAfPluginPriceCommonServerGetFutureIndex#
uint8_t emberAfPluginPriceCommonServerGetFutureIndex (EmberAfPriceCommonInfo * commonInfos, uint8_t numberOfEntries, uint32_t * secUntilFutureEvent)
Return the index to the most recent entry that will become active in the future.
N/A | commonInfos | The EmberAfPriceCommonInfo array that will be searched for the entry. @numberOfEntries The number of entries in the commonInfo array. @secUntilFutureEvent The output pointer to the number of seconds until the next active entry. |
N/A | numberOfEntries | |
N/A | secUntilFutureEvent |
Returns
The index of the next-active entry, or 0xFF if an active entry is not found.
205
of file app/framework/plugin/price-common/price-common.h
Macro Definition Documentation#
EMBER_AF_PRICE_CLUSTER_SERVER_ENDPOINT_COUNT#
#define EMBER_AF_PRICE_CLUSTER_SERVER_ENDPOINT_COUNTValue:
(1)
39
of file app/framework/plugin/price-common/price-common.h
EVENT_ID_UNSPECIFIED#
#define EVENT_ID_UNSPECIFIEDValue:
(0xFFFFFFFFUL)
42
of file app/framework/plugin/price-common/price-common.h
TARIFF_TYPE_UNSPECIFIED#
#define TARIFF_TYPE_UNSPECIFIEDValue:
(0xFFu)
43
of file app/framework/plugin/price-common/price-common.h
ZCL_PRICE_CLUSTER_PRICE_ACKNOWLEDGEMENT_MASK#
#define ZCL_PRICE_CLUSTER_PRICE_ACKNOWLEDGEMENT_MASKValue:
(0x01u)
44
of file app/framework/plugin/price-common/price-common.h
ZCL_PRICE_CLUSTER_RESERVED_MASK#
#define ZCL_PRICE_CLUSTER_RESERVED_MASKValue:
(0xFEu)
45
of file app/framework/plugin/price-common/price-common.h
ZCL_PRICE_CLUSTER_DURATION16_UNTIL_CHANGED#
#define ZCL_PRICE_CLUSTER_DURATION16_UNTIL_CHANGEDValue:
(0xFFFFu)
46
of file app/framework/plugin/price-common/price-common.h
ZCL_PRICE_CLUSTER_DURATION_SEC_UNTIL_CHANGED#
#define ZCL_PRICE_CLUSTER_DURATION_SEC_UNTIL_CHANGEDValue:
(0xFFFFFFFFUL)
47
of file app/framework/plugin/price-common/price-common.h
ZCL_PRICE_CLUSTER_END_TIME_NEVER#
#define ZCL_PRICE_CLUSTER_END_TIME_NEVERValue:
(0xFFFFFFFFUL)
48
of file app/framework/plugin/price-common/price-common.h
ZCL_PRICE_CLUSTER_NUMBER_OF_EVENTS_ALL#
#define ZCL_PRICE_CLUSTER_NUMBER_OF_EVENTS_ALLValue:
(0x00u)
49
of file app/framework/plugin/price-common/price-common.h
ZCL_PRICE_CLUSTER_START_TIME_NOW#
#define ZCL_PRICE_CLUSTER_START_TIME_NOWValue:
(0x00000000UL)
50
of file app/framework/plugin/price-common/price-common.h
ZCL_PRICE_CLUSTER_WILDCARD_ISSUER_ID#
#define ZCL_PRICE_CLUSTER_WILDCARD_ISSUER_IDValue:
(0xFFFFFFFFUL)
51
of file app/framework/plugin/price-common/price-common.h
ZCL_PRICE_INVALID_ENDPOINT_INDEX#
#define ZCL_PRICE_INVALID_ENDPOINT_INDEXValue:
(0xFFu)
52
of file app/framework/plugin/price-common/price-common.h
ZCL_PRICE_INVALID_INDEX#
#define ZCL_PRICE_INVALID_INDEXValue:
(0xFFu)
53
of file app/framework/plugin/price-common/price-common.h
ZCL_PRICE_CLUSTER_DURATION_UNTIL_CHANGED#
#define ZCL_PRICE_CLUSTER_DURATION_UNTIL_CHANGEDValue:
(0xFFFFu)
54
of file app/framework/plugin/price-common/price-common.h