123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 |
- #ifndef NONWK
- #include "AF.h"
- #endif
- #include "hal_adc.h"
- #include "hal_flash.h"
- #include "hal_lcd.h"
- #include "hal_led.h"
- #include "hal_drivers.h"
- #include "OnBoard.h"
- #include "OSAL.h"
- #include "OSAL_Nv.h"
- #include "ZComDef.h"
- #include "ZMAC.h"
- static void zmain_ext_addr( void );
- #if defined ZCL_KEY_ESTABLISH
- static void zmain_cert_init( void );
- #endif
- static void zmain_dev_info( void );
- static void zmain_vdd_check( void );
- #ifdef LCD_SUPPORTED
- static void zmain_lcd_init( void );
- #endif
- extern uint8 AppTitle[];
- int main( void )
- {
-
- osal_int_disable( INTS_ALL );
-
- HAL_BOARD_INIT();
-
- zmain_vdd_check();
-
- InitBoard( OB_COLD );
-
- HalDriverInit();
-
- osal_nv_init( NULL );
-
- ZMacInit();
-
- zmain_ext_addr();
- #if defined ZCL_KEY_ESTABLISH
-
- zmain_cert_init();
- #endif
-
- zgInit();
- #ifndef NONWK
-
- afInit();
- #endif
-
- osal_init_system();
-
- osal_int_enable( INTS_ALL );
-
- InitBoard( OB_READY );
-
- zmain_dev_info();
-
- #ifdef LCD_SUPPORTED
- zmain_lcd_init();
- #endif
- #ifdef WDT_IN_PM1
-
- WatchDogEnable( WDTIMX );
- #endif
- osal_start_system();
- return 0;
- }
- static void zmain_vdd_check( void )
- {
- uint8 cnt = 16;
-
- do {
- while (!HalAdcCheckVdd(VDD_MIN_RUN));
- } while (--cnt);
- }
- static void zmain_ext_addr(void)
- {
- uint8 nullAddr[Z_EXTADDR_LEN] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
- uint8 writeNV = TRUE;
-
- if ((SUCCESS != osal_nv_item_init(ZCD_NV_EXTADDR, Z_EXTADDR_LEN, NULL)) ||
- (SUCCESS != osal_nv_read(ZCD_NV_EXTADDR, 0, Z_EXTADDR_LEN, aExtendedAddress)) ||
- (osal_memcmp(aExtendedAddress, nullAddr, Z_EXTADDR_LEN)))
- {
-
-
- HalFlashRead(HAL_FLASH_IEEE_PAGE, HAL_FLASH_IEEE_OSET, aExtendedAddress, Z_EXTADDR_LEN);
- if (osal_memcmp(aExtendedAddress, nullAddr, Z_EXTADDR_LEN))
- {
-
- if (!osal_memcmp((uint8 *)(P_INFOPAGE+HAL_INFOP_IEEE_OSET), nullAddr, Z_EXTADDR_LEN))
- {
- osal_memcpy(aExtendedAddress, (uint8 *)(P_INFOPAGE+HAL_INFOP_IEEE_OSET), Z_EXTADDR_LEN);
- }
- else
- {
- uint8 idx;
-
- #if !defined ( NV_RESTORE )
- writeNV = FALSE;
- #endif
-
- for (idx = 0; idx < (Z_EXTADDR_LEN - 2);)
- {
- uint16 randy = osal_rand();
- aExtendedAddress[idx++] = LO_UINT16(randy);
- aExtendedAddress[idx++] = HI_UINT16(randy);
- }
-
- #if ZG_BUILD_COORDINATOR_TYPE && !ZG_BUILD_JOINING_TYPE
- aExtendedAddress[idx++] = 0x10;
- #elif ZG_BUILD_RTRONLY_TYPE
- aExtendedAddress[idx++] = 0x20;
- #else
- aExtendedAddress[idx++] = 0x30;
- #endif
-
- aExtendedAddress[idx] = 0xF8;
- }
- }
- if (writeNV)
- {
- (void)osal_nv_write(ZCD_NV_EXTADDR, 0, Z_EXTADDR_LEN, aExtendedAddress);
- }
- }
-
- (void)ZMacSetReq(MAC_EXTENDED_ADDRESS, aExtendedAddress);
- }
- #if defined ZCL_KEY_ESTABLISH
- static void zmain_cert_init(void)
- {
- uint8 certData[ZCL_KE_IMPLICIT_CERTIFICATE_LEN];
- uint8 nullData[ZCL_KE_IMPLICIT_CERTIFICATE_LEN] = {
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
- };
- (void)osal_nv_item_init(ZCD_NV_IMPLICIT_CERTIFICATE, ZCL_KE_IMPLICIT_CERTIFICATE_LEN, NULL);
- (void)osal_nv_item_init(ZCD_NV_DEVICE_PRIVATE_KEY, ZCL_KE_DEVICE_PRIVATE_KEY_LEN, NULL);
-
-
- if ((SUCCESS != osal_nv_item_init(ZCD_NV_CA_PUBLIC_KEY, ZCL_KE_CA_PUBLIC_KEY_LEN, NULL)) ||
- (SUCCESS != osal_nv_read(ZCD_NV_CA_PUBLIC_KEY, 0, ZCL_KE_CA_PUBLIC_KEY_LEN, certData)) ||
- (osal_memcmp(certData, nullData, ZCL_KE_CA_PUBLIC_KEY_LEN)))
- {
-
- HalFlashRead(HAL_FLASH_IEEE_PAGE, HAL_FLASH_CA_PUBLIC_KEY_OSET, certData,
- ZCL_KE_CA_PUBLIC_KEY_LEN);
-
- if (!osal_memcmp(certData, nullData, ZCL_KE_CA_PUBLIC_KEY_LEN))
- {
- (void)osal_nv_write(ZCD_NV_CA_PUBLIC_KEY, 0, ZCL_KE_CA_PUBLIC_KEY_LEN, certData);
- HalFlashRead(HAL_FLASH_IEEE_PAGE, HAL_FLASH_IMPLICIT_CERT_OSET, certData,
- ZCL_KE_IMPLICIT_CERTIFICATE_LEN);
- (void)osal_nv_write(ZCD_NV_IMPLICIT_CERTIFICATE, 0,
- ZCL_KE_IMPLICIT_CERTIFICATE_LEN, certData);
- HalFlashRead(HAL_FLASH_IEEE_PAGE, HAL_FLASH_DEV_PRIVATE_KEY_OSET, certData,
- ZCL_KE_DEVICE_PRIVATE_KEY_LEN);
- (void)osal_nv_write(ZCD_NV_DEVICE_PRIVATE_KEY, 0, ZCL_KE_DEVICE_PRIVATE_KEY_LEN, certData);
- }
- }
- }
- #endif
- static void zmain_dev_info(void)
- {
- #ifdef LCD_SUPPORTED
- #endif
- }
- #ifdef LCD_SUPPORTED
- static void zmain_lcd_init ( void )
- {
- #ifdef SERIAL_DEBUG_SUPPORTED
- {
-
- #if defined( MT_MAC_FUNC )
- #if defined( ZDO_COORDINATOR )
-
- #else
-
- #endif
- #elif defined( MT_NWK_FUNC )
- #if defined( ZDO_COORDINATOR )
-
- #else
-
- #endif
- #endif
- }
- #endif
- }
- #endif
|