📄 atjenie_app.c
字号:
/**************************************************************************** * * MODULE: ATJenieApp.c * * COMPONENT: ATJenie_App.c,v * * VERSION: AT-Jenie_Release_v1_RC3 * * REVISION: 1.21 * * DATED: 2007/11/23 12:07:22 * * STATUS: Exp * * AUTHOR: MRW * * DESCRIPTION: AT Jenie Example Application * * LAST MODIFIED BY: mwild * $Modtime: $ * * HISTORY: * **************************************************************************** * * This software is owned by Jennic and/or its supplier and is protected * under applicable copyright laws. All rights are reserved. We grant You, * and any third parties, a license to use this software solely and * exclusively on Jennic products. You, and any third parties must reproduce * the copyright and warranty notice and any other legend of ownership on each * copy or partial copy of the software. * * THIS SOFTWARE IS PROVIDED "AS IS". JENNIC MAKES NO WARRANTIES, WHETHER * EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, * ACCURACY OR LACK OF NEGLIGENCE. JENNIC SHALL NOT, IN ANY CIRCUMSTANCES, * BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, SPECIAL, * INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON WHATSOEVER. * * Copyright Jennic Ltd 2007. All rights reserved * ****************************************************************************//****************************************************************************//*** Include files ***//****************************************************************************/#include <string.h>#include <jendefs.h>#include "gdb.h"#include "Jenie.h"#include "ATJParser.h"#include "ATJCommands.h"#include "ATJPlatformCmds.h"#ifdef ATJ_TUNNELING#include "ATJTunnel.h"#endif#include "Serial.h"#include "uart.h"#include "AppHardwareApi.h"/****************************************************************************//*** Macro Definitions ***//****************************************************************************/#ifdef ATJ_TUNNELING/* service AT Jenie command tunnel is connected to */#define ATJ_TUNNEL_SERVICE (32UL)#endif/****************************************************************************//*** Type Definitions ***//****************************************************************************//****************************************************************************//*** Local Function Prototypes ***//****************************************************************************//****************************************************************************//*** Exported Variables ***//****************************************************************************//****************************************************************************//*** Local Variables ***//****************************************************************************/ATJ_DECLARE_CHAR_CHANNEL(UartChannel, i16Serial_RxChar, bSerial_TxChar, vUART_SetBaudRate ); /* [I SP001222_P1 1] *//****************************************************************************//*** Exported Functions ***//****************************************************************************//**************************************************************************** * * NAME: vJenie_ConfigureNetwork * * DESCRIPTION: * Entry point for application from boot loader. Initialises system. * * RETURNS: * Nothing * ****************************************************************************/PUBLIC void vJenie_CbConfigureNetwork(void){ /* Debug hooks: include these regardless of whether debugging or not */ HAL_GDB_INIT();#ifdef GDB /* Increase the UART speed from the default of 9600 */ vAHI_UartSetClockDivisor(0, E_AHI_UART_RATE_38400);#endif HAL_BREAKPOINT(); vSerial_Init(); /* [I SP001222_P1 1] */ vATJ_ParserInit(FALSE); vATJ_CommandsInit(); vATJ_PlatformCommandsInit(); vATJ_ParserAddChannel(&UartChannel); vATJ_ParserOpenChannel(&UartChannel); /* only allow applicable commands when configuring */ vATJ_ParserSetCommandEnable(&UartChannel, "INI,CFG,CFP,GTV,CCF,CCS,RST,OAD", TRUE); /* [I SP001222_P1 272] */ /* enable all peripheral commands */ vATJ_ParserSetCommandEnable(&UartChannel, "PAC,PAE,PAD,PAS,PAR,PAO,PCE,PCD,PCI,PCS,PCW,PWE,PWG,PWX,PWS,PWC,PWF,PDD,PDO,PDP,PDR,PDE,PDS,PTE,PTD,PTG,PTC,PTR,PTX,PTF", TRUE); /* [I SP001222_P1 272] */ while (E_JENIE_INITIALISED != ATJ_CommandsJenieState) { /* [I SP001222_P1 273] */ vATJ_ParserProcessCharChannel(&UartChannel); /* [I SP001222_P1 271] */ } vATJ_ParserSetCommandEnable(&UartChannel, "INI", FALSE);}/**************************************************************************** * * NAME: vJenie_Init * * DESCRIPTION: * Called by Jenie after stack started to perforn hardware init * * RETURNS: * void * ****************************************************************************/PUBLIC void vJenie_CbInit(bool_t bWarmStart){ if (bWarmStart) { HAL_GDB_INIT(); #ifdef GDB /* Increase the UART speed from the default of 9600 */ vAHI_UartSetClockDivisor(0, E_AHI_UART_RATE_38400); #endif vSerial_Init(); vATJ_ParserInit(TRUE);#if defined(ATJ_COORDINATOR) eJenie_Start(E_JENIE_COORDINATOR);#elif defined(ATJ_ROUTER) eJenie_Start(E_JENIE_ROUTER);#elif defined(ATJ_ENDDEVICE) eJenie_Start(E_JENIE_END_DEVICE);#else#error One of ATJ_COORDINATOR, ATJ_ROUTER or ATJ_ENDDEVICE must be defined#endif } else { /* only allow applicable commands when starting */ vATJ_ParserSetCommandEnable(&UartChannel, "STR", TRUE); /* [I SP001222_P1 275] */ while (E_JENIE_STARTED != ATJ_CommandsJenieState) { /* [I SP001222_P1 276] */ vATJ_ParserProcessCharChannel(&UartChannel); /* [I SP001222_P1 274] */ } vATJ_ParserSetCommandEnable(&UartChannel, "STR,CFG,CFP", FALSE); /* [I SP001222_P1 278] */ }}/****************************************************************************//*** Functions called by the stack ***//****************************************************************************//**************************************************************************** * * NAME: vJenie_Main * * DESCRIPTION: * Main user routine. * at regular intervals. * * RETURNS: * void * ****************************************************************************/PUBLIC void vJenie_CbMain(void){ static bool_t bInit = TRUE; /* enable commands once the wireless net is up */ if (bInit) { bInit = FALSE;#ifdef ATJ_TUNNELING /* register all services here */ eJenie_RegisterServices(1UL << (ATJ_TUNNEL_SERVICE - 1)); vATJ_TunnelInit(&UartChannel, ATJ_TUNNEL_SERVICE);#endif vATJ_ParserSetCommandEnable(&UartChannel, "REG,RQS,BND,UBN,SAS,GAS,KEY,SND,SDS,SCN,RCN,SSP,SLP,RDP,GTV,POL,LVE", TRUE); /* [I SP001222_P1 278] */ vATJ_ParserSetCommandEnable(&UartChannel, "BGV,BGT,BGL,BGH,BGR,BGF,BLO,BLF,BTX", TRUE); } vATJ_ParserProcessCharChannel(&UartChannel); /* [I SP001222_P1 277] */}/**************************************************************************** * * NAME: vJenie_HwEvent * * DESCRIPTION: * Adds events to the hardware event queue. * * PARAMETERS: Name RW Usage * u32DeviceId R Peripheral responsible for interrupt e.g DsGateway.u8NodeDetailsIO * u32ItemBitmap R Source of interrupt e.g. DIO bit map * * RETURNS: * void * * HISTORY: Ver0.7 - 07/08/07 - new AT_Jenie Command set - End-of-Command character changed to "Line Feed" * instead of any non-CSV character as previously ****************************************************************************/PUBLIC void vJenie_CbHwEvent(uint32 u32DeviceId,uint32 u32ItemBitmap){ uint8 EventStr[128]; if (bATJ_CommandsJenieHwEventToStr(u32DeviceId, u32ItemBitmap, EventStr)) { vATJ_ParserProcessEvent(EventStr); }}/**************************************************************************** * * NAME: vJenie_StackDataEvent * * DESCRIPTION: * Used to receive stack data events * * PARAMETERS: Name RW Usage * *psStackDataEvent R Pointer to data structure * * RETURNS: * void * ****************************************************************************/PUBLIC void vJenie_CbStackDataEvent(teEventType eEventType, void *pvEventPrim){#ifdef ATJ_TUNNELING if (!bATJ_TunnelCommand(eEventType, pvEventPrim)) {#endif uint8 EventStr[128]; if (vATJ_CommandsJenieEventToStr(eEventType, pvEventPrim, EventStr)) { vATJ_ParserProcessEvent(EventStr); }#ifdef ATJ_TUNNELING }#endif}/**************************************************************************** * * NAME: vJenie_StackMgmtEvent * * DESCRIPTION: * Used to receive stack management events * * PARAMETERS: Name RW Usage * *psStackMgmtEvent R Pointer to event structure * * RETURNS: * void * ****************************************************************************/PUBLIC void vJenie_CbStackMgmtEvent(teEventType eEventType, void *pvEventPrim){ uint8 EventStr[128]; if (vATJ_CommandsJenieEventToStr(eEventType, pvEventPrim, EventStr)) { vATJ_ParserProcessEvent(EventStr); }}/****************************************************************************//*** Local Functions ***//****************************************************************************//****************************************************************************//*** END OF FILE ***//****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -