/*! State Machine function */ void emberAfPluginSimpleCommissioningInitiatorStateMachineEventHandler(void) { emberEventControlSetInactive(StateMachineEvent); // That might happened that ZigBee state machine changed current network // So, it is important to switch to the proper network before commissioning // state machine might start EmberStatus status = emberAfPushNetworkIndex(dev_comm_session.network_index); if (status != EMBER_SUCCESS) { // TODO: Handle unavailability of switching network } emberAfDebugPrintln("DEBUG: State Machine"); // Get state previously set by some handler CommissioningState_t cur_state = GetNextState(); CommissioningEvent_t cur_event = GetNextEvent(); for (size_t i = 0; i < TRANSIT_TABLE_SIZE(); ++i) { if ((cur_state == sm_transition_table[i].state || SC_EZ_UNKNOWN == sm_transition_table[i].state) && ((cur_event == sm_transition_table[i].event) || SC_EZEV_UNKNOWN == sm_transition_table[i].event)) { // call handler which set the next_state on return and // next_event inside itself SetNextState((sm_transition_table[i].handler)()); break; } } // Don't forget to pop Network Index status = emberAfPopNetworkIndex(); // sanity check that network switched back properly EMBER_TEST_ASSERT(status == EMBER_SUCCESS); }
void emberCommandActionHandler(const CommandAction action) { emberAfPushNetworkIndex(emAfCliNetworkIndex); (*action)(); emberAfPopNetworkIndex(); #if defined(EMBER_QA) emberSerialPrintfLine(APP_SERIAL, "CLI Finished"); #endif }
void emAfCliInfoCommand(void) { EmberNodeType nodeTypeResult = 0xFF; uint8_t commandLength; EmberEUI64 myEui64; EmberNetworkParameters networkParams; emberStringCommandArgument(-1, &commandLength); printMfgString(); emberAfAppPrintln("AppBuilder MFG Code: 0x%2X", EMBER_AF_MANUFACTURER_CODE); emberAfGetEui64(myEui64); emberAfGetNetworkParameters(&nodeTypeResult, &networkParams); emberAfAppPrint("node ["); emberAfAppDebugExec(emberAfPrintBigEndianEui64(myEui64)); emberAfAppFlush(); emberAfAppPrintln("] chan [%d] pwr [%d]", networkParams.radioChannel, networkParams.radioTxPower); emberAfAppPrint("panID [0x%2x] nodeID [0x%2x] ", networkParams.panId, emberAfGetNodeId()); emberAfAppFlush(); emberAfAppPrint("xpan [0x"); emberAfAppDebugExec(emberAfPrintBigEndianEui64(networkParams.extendedPanId)); emberAfAppPrintln("]"); emberAfAppFlush(); emAfCliVersionCommand(); emberAfAppFlush(); emberAfAppPrint("nodeType ["); if (nodeTypeResult != 0xFF) { emberAfAppPrint("0x%x", nodeTypeResult); } else { emberAfAppPrint("unknown"); } emberAfAppPrintln("]"); emberAfAppFlush(); emberAfAppPrintln("%p level [%x]", "Security", emberAfGetSecurityLevel()); printSmartEnergySecurityInfo(); printSmartEnergySecurityInfo283k1(); emberAfAppPrint("network state [%x] ", emberNetworkState()); printPacketBuffers(); emberAfAppFlush(); // print the endpoint information { uint8_t i, j; emberAfAppPrintln("Ep cnt: %d", emberAfEndpointCount()); // loop for each endpoint for (i = 0; i < emberAfEndpointCount(); i++) { EmberAfEndpointType *et = emAfEndpoints[i].endpointType; emberAfAppPrint("ep %d [endpoint %p, device %p] ", emberAfEndpointFromIndex(i), (emberAfEndpointIndexIsEnabled(i) ? "enabled" : "disabled"), emberAfIsDeviceEnabled(emberAfEndpointFromIndex(i)) ? "enabled" : "disabled"); emberAfAppPrintln("nwk [%d] profile [0x%2x] devId [0x%2x] ver [0x%x]", emberAfNetworkIndexFromEndpointIndex(i), emberAfProfileIdFromIndex(i), emberAfDeviceIdFromIndex(i), emberAfDeviceVersionFromIndex(i)); // loop for the clusters within the endpoint for (j = 0; j < et->clusterCount; j++) { EmberAfCluster *zc = &(et->cluster[j]); emberAfAppPrint(" %p cluster: 0x%2x ", (emberAfClusterIsClient(zc) ? "out(client)" : "in (server)" ), zc->clusterId); emberAfAppDebugExec(emberAfDecodeAndPrintCluster(zc->clusterId)); emberAfAppPrintln(""); emberAfAppFlush(); } emberAfAppFlush(); } } { PGM_P names[] = { EM_AF_GENERATED_NETWORK_STRINGS }; uint8_t i; emberAfAppPrintln("Nwk cnt: %d", EMBER_SUPPORTED_NETWORKS); for (i = 0; i < EMBER_SUPPORTED_NETWORKS; i++) { emberAfPushNetworkIndex(i); emberAfAppPrintln("nwk %d [%p]", i, names[i]); if (emAfProIsCurrentNetwork()) { emberAfAppPrintln(" nodeType [0x%x]", emAfCurrentZigbeeProNetwork->nodeType); emberAfAppPrintln(" securityProfile [0x%x]", emAfCurrentZigbeeProNetwork->securityProfile); } emberAfPopNetworkIndex(); } } }
EmberStatus emberAfRf4cePushNetworkIndex(void) { NETWORK_INDEX_ASSERT(rf4ceNetworkIndex != 0xFF); return emberAfPushNetworkIndex(rf4ceNetworkIndex); }