#define MAXRSPLEN 16
uint8_t cmd[1] = {1};
uint8_t rsp[MAXRSPLEN];
uint8_t rsplen = MAXRSPLEN;
static void sendCustom(void)
{
EmberStatus status;
status = ezspCustomFrame(sizeof(cmd), cmd, &rsplen, rsp);
emberAfCorePrintln("rsp len %d", rsplen);
for (uint8_t i = 0; i< rsplen; i++)
emberAfCorePrintln("%x", rsp[i]);
}
EmberStatus emberAfPluginXncpIncomingCustomFrameCallback(uint8_t messageLength,
uint8_t *messagePayload,
uint8_t *replyPayloadLength,
uint8_t *replyPayload)
{
*replyPayloadLength = 4;
replyPayload[0] = 1;
replyPayload[1] = 2;
replyPayload[2] = 3;
replyPayload[3] = 4;
return EMBER_SUCCESS;
}
static void setMfgCtune(void)
{
uint16_t ctune = 32;
EmberStatus status = ezspSetMfgToken(EZSP_MFG_CTUNE, 2, (uint8_t *) &ctune);
emberAfCorePrintln("status 0x%x\n", status);
}
warning: To perform consecutive writes, you need to use "commander device pageerase --region @userdata" before each write
static void setCtune(void)
{
uint16_t ctune = 32;
EmberStatus status = ezspSetConfigurationValue(EZSP_CONFIG_CTUNE_VALUE, ctune);
emberAfCorePrintln("status 0x%x\n", status);
}
static void getCtune(void)
{
uint16_t ctune;
ezspGetConfigurationValue(EZSP_CONFIG_CTUNE_VALUE, &ctune);
emberAfCorePrintln("ctune 0x%x\n", ctune);
uint16_t mfgctune;
uint8_t res = ezspGetMfgToken(EZSP_MFG_CTUNE, (uint8_t *) &mfgctune);
emberAfCorePrintln("ctuneMfg 0x%x\n", mfgctune);
}