void init_zlg_zm516x(void) { gpio_init(); sleep_zm516x(1); serialport_init(); usleep(100000); sleep_zm516x(0); read_local_cfg(); write_local_cfg(); }
/********************************************************************* * @fn SimpleBLEPeripheral_ProcessEvent * * @brief Simple BLE Peripheral Application Task event processor. This function * is called to process all events for the task. Events * include timers, messages and any other user defined events. * * @param task_id - The OSAL assigned task ID. * @param events - events to process. This is a bit map and can * contain more than one event. * * @return events not processed */ uint16 SimpleBLEPeripheral_ProcessEvent( uint8 task_id, uint16 events ) { VOID task_id; // OSAL required parameter that isn't used in this function if ( events & SYS_EVENT_MSG ) { uint8 *pMsg; if ( (pMsg = osal_msg_receive( simpleBLEPeripheral_TaskID )) != NULL ) { simpleBLEPeripheral_ProcessOSALMsg( (osal_event_hdr_t *)pMsg ); // Release the OSAL message VOID osal_msg_deallocate( pMsg ); } // return unprocessed events return (events ^ SYS_EVENT_MSG); } //user add if ( events & ZIGBEE_READ_ZM516X_INFO_EVT ) { static uint8 state = 0; switch(state) { case 0: init_zigbee_zm516x( task_id, ZIGBEE_READ_ZM516X_INFO_EVT ); state = 1; break; case 1: HalGpioSet(HAL_GPIO_ZM516X_ALL,1); HalGpioSet( HAL_GPIO_ZM516X_RESET,1 ); osal_start_timerEx( task_id, ZIGBEE_READ_ZM516X_INFO_EVT, 100 ); state = 2; break; case 2: HalGpioSet(HAL_GPIO_ZM516X_ALL,1); read_local_cfg(); state = 3; break; case 3: UartReceiveData( task_id, ZIGBEE_READ_ZM516X_INFO_EVT ); state = 2; osal_start_timerEx( task_id, ZIGBEE_READ_ZM516X_INFO_EVT, 100 ); break; default: break; } return (events ^ ZIGBEE_READ_ZM516X_INFO_EVT); } if ( events & UART_RECEIVE_EVT ) { static unsigned char lenold = 0; unsigned char len = 0; //; NPI_ReadTransport(buf,len); if((len = NPI_RxBufLen()) > 0) { if(lenold == len) { osal_set_event( task_id, ZIGBEE_READ_ZM516X_INFO_EVT ); lenold = 0; } else { lenold = len; osal_stop_timerEx( task_id, UART_RECEIVE_EVT ); osal_start_timerEx( task_id, UART_RECEIVE_EVT, 3 ); } return ( events ^ UART_RECEIVE_EVT ); } else { //if(lenold > 0) //osal_set_event( task_id, SBP_READ_ZM516X_INFO_EVT ); //lenold = len; //osal_start_timerEx( task_id, UART_RECEIVE_EVT, 10 ); //osal_set_event( task_id, SBP_READ_ZM516X_INFO_EVT ); return ( events ^ UART_RECEIVE_EVT ); } } //end user add if ( events & SBP_START_DEVICE_EVT ) { // Start the Device VOID GAPRole_StartDevice( &simpleBLEPeripheral_PeripheralCBs ); // Start Bond Manager VOID GAPBondMgr_Register( &simpleBLEPeripheral_BondMgrCBs ); // Set timer for first periodic event osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD ); // user add : start user event osal_set_event( simpleBLEPeripheral_TaskID, ZIGBEE_READ_ZM516X_INFO_EVT ); return ( events ^ SBP_START_DEVICE_EVT ); } if ( events & SBP_PERIODIC_EVT ) { // Restart timer if ( SBP_PERIODIC_EVT_PERIOD ) { osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD ); } // Perform periodic application task performPeriodicTask(); return (events ^ SBP_PERIODIC_EVT); } // Discard unknown events return 0; }