int main( void ) { halInit(); printf("\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n"); printf("\r\nBasic Communications Example - ROUTER - using Simple API\r\n"); HAL_ENABLE_INTERRUPTS(); //Simple check to ensure that both security options weren't #defined. #if defined(USE_SECURITY_MODE_PRECONFIGURED_KEYS) && defined(USE_SECURITY_MODE_COORD_DIST_KEYS) printf("ERROR - only select one security option!\r\n"); while (1); #endif /* Initialize the ZNP */ printf("Initializing the ZNP\r\n"); znpInit(); handleReturnValue(); /* Set Startup Options (will restore the ZNP to default values on reset) */ printf("Setting StartupOptions\r\n"); setStartupOptions(STARTOPT_CLEAR_CONFIG + STARTOPT_CLEAR_STATE); handleReturnValue(); /* Reset the ZNP */ printf("Reset the ZNP\r\n"); znpReset(); handleReturnValue(); /* Set Zigbee Device Type to be ROUTER */ printf("Setting Zigbee Device Type\r\n"); setZigbeeDeviceType(ROUTER); handleReturnValue(); /* Configure security mode, if it is being used */ #ifdef USE_SECURITY_MODE_PRECONFIGURED_KEYS printf("SECURITY ON WITH PRECONFIGURED KEYS\r\n"); /* Turn security ON with pre-configured keys */ setSecurityMode(SECURITY_MODE_PRECONFIGURED_KEYS); handleReturnValue(); /* All devices on the network must be loaded with the same key */ setSecurityKey(key); handleReturnValue(); #endif #ifdef USE_SECURITY_MODE_COORD_DIST_KEYS printf("SECURITY ON WITH COORDINATOR DISTRIBUTING KEYS\r\n"); /* Turn security ON with the coordinator distributing keys. */ setSecurityMode(SECURITY_MODE_COORD_DIST_KEYS); handleReturnValue(); /* This is the key that will be distributed to other devices when they attempt to join */ setSecurityKey(key); handleReturnValue(); #endif #if !defined(USE_SECURITY_MODE_PRECONFIGURED_KEYS) && !defined(USE_SECURITY_MODE_COORD_DIST_KEYS) printf("SECURITY OFF\r\n"); #endif /* Configure the ZNP for our application */ printf("Registering Application\r\n"); sapiRegisterGenericApplication(); handleReturnValue(); /* Now, start the application. We will receive a START_REQUEST_SRSP, and then if it is successful, a START_CONFIRM. */ printf("Starting the Application\r\n"); sapiStartApplication(); handleReturnValue(); printf("On Network!\r\n"); setLed(0); /* On network, display info about this network */ #ifdef DISPLAY_NETWORK_INFORMATION getNetworkConfigurationParameters(); getDeviceInformation(); #endif /* Now the network is running - send a message to the coordinator every few seconds.*/ unsigned char counter = 0; unsigned char testMessage[] = {0xF0,0xF1,0xF2,0xF3,0xF4}; #define TEST_CLUSTER 0x77 pollAndDisplay(); while (1) { printf("Sending Message %u\r\n", counter++); sendData(0, TEST_CLUSTER, testMessage, 5); handleReturnValue(); toggleLed(1); delayMs(5000); } }
int main( void ) { halInit(); //Sets up all hardware inc debug Tx/Rx (Used for WiFi <--> ZNP) printf("\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n"); printf("\r\nBasic Communications Example - COORDINATOR - using Simple API\r\n"); HAL_ENABLE_INTERRUPTS(); setLed(0); //Simple check to ensure that both security options weren't #defined. #if defined(USE_SECURITY_MODE_PRECONFIGURED_KEYS) && defined(USE_SECURITY_MODE_COORD_DIST_KEYS) printf("ERROR\r\n"); while (1); #endif /* Initialize the ZNP */ printf("Initializing the ZNP\r\n"); znpInit(); handleReturnValue(); /* Set Startup Options (will restore the ZNP to default values on reset) */ printf("Setting StartupOptions\r\n"); setStartupOptions(STARTOPT_CLEAR_CONFIG + STARTOPT_CLEAR_STATE); handleReturnValue(); /* Reset the ZNP */ printf("Reset the ZNP\r\n"); znpReset(); handleReturnValue(); /* Set Zigbee Device Type to be COORDINATOR */ printf("Setting Zigbee Device Type\r\n"); setZigbeeDeviceType(COORDINATOR); handleReturnValue(); /* Enabling Callbacks (required to receive ZDO_IEEE_ADDR_RSP) */ printf("Enabling Callbacks\r\n"); setCallbacks(CALLBACKS_ENABLED); handleReturnValue(); /* Configure security mode, if it is being used */ #ifdef USE_SECURITY_MODE_PRECONFIGURED_KEYS printf("SECURITY ON WITH PRECONFIGURED KEYS\r\n"); /* Turn security ON with pre-configured keys */ setSecurityMode(SECURITY_MODE_PRECONFIGURED_KEYS); handleReturnValue(); /* All devices on the network must be loaded with the same key */ setSecurityKey(key); handleReturnValue(); #endif #ifdef USE_SECURITY_MODE_COORD_DIST_KEYS printf("SECURITY ON WITH COORDINATOR DISTRIBUTING KEYS\r\n"); /* Turn security ON with the coordinator distributing keys. */ setSecurityMode(SECURITY_MODE_COORD_DIST_KEYS); handleReturnValue(); /* This is the key that will be distributed to other devices when they attempt to join */ setSecurityKey(key); handleReturnValue(); #endif #if !defined(USE_SECURITY_MODE_PRECONFIGURED_KEYS) && !defined(USE_SECURITY_MODE_COORD_DIST_KEYS) printf("SECURITY OFF\r\n"); #endif /* Configure the ZNP for our application: */ printf("Registering Application\r\n"); sapiRegisterGenericApplication(); handleReturnValue(); /* Now, start the application. We will receive a START_REQUEST_SRSP, and then if it is successful, a START_CONFIRM. */ printf("Starting the Application\r\n"); sapiStartApplication(); handleReturnValue(); printf("On Network!\r\n"); setLed(1); /* On network, display info about this network */ #ifdef DISPLAY_NETWORK_INFORMATION getNetworkConfigurationParameters(); getDeviceInformation(); #endif /* Now the network is running - continually poll for any received messages from the ZNP */ //displayReceivedMessages(); while(1) { /* int light = getLightSense(); if(light > 100) { sendData(0xC72, 0xF, 0x1, 1); } else { sendData(0xC72, 0xF, 0x2, 1); } */ int cmd = readUART(); //Read UART //Depending on command, send appropriate message to relevant end point switch (cmd) { case CLOSE1: //sendData(dest, cluster, data, dataLength); sendData(0xC72, 0xF, 0x1, 1); break; case OPEN1: sendData(0xC72, 0xF, 0x2, 1); break; case FILM1: sendData(0xC72, 0xF, 0x3, 1); break; case DAY1: sendData(0xC72, 0xF, 0x4, 1); break; case NIGHT1: sendData(0xC72, 0xF, 0x5, 1); break; case CLOSE2: sendData(0xC72, 0xF, 0x6, 1); break; case OPEN2: sendData(0xC72, 0xF, 0x7, 1); break; case FILM2: sendData(0xC72, 0xF, 0x8, 1); break; case DAY2: sendData(0xC72, 0xF, 0x9, 1); break; case NIGHT2: sendData(0xC72, 0xF, 0xA, 1); break; default: break; } } }