⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atjplatformcmds.c

📁 JENNIC无线传感器网络 ZIGBEE 文件资料
💻 C
📖 第 1 页 / 共 2 页
字号:
/**************************************************************************** * * MODULE:             ATJPlatformCmds.c * * COMPONENT:          ATJPlatformCmds.c,v * * VERSION:            AT-Jenie_Release_v1_RC3 * * REVISION:           1.6 * * DATED:              2007/11/20 11:42:18 * * STATUS:             Exp * * AUTHOR:             MRW * * DESCRIPTION:        AT-Jenie Platform Specific Commands * * 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 "atjparser.h"#include "ledcontrol.h"#include "alsdriver.h"#include "button.h"#ifdef  JENNIC_PCB_NTS    #include "MCP9803.h"        /* temp sensor chip */#else    #include "htsdriver.h"      /* temp/humidity chip */    #include "lcddriver.h"#endif/****************************************************************************//***        Macro Definitions                                             ***//****************************************************************************/#define ADC_TIMEOUT     3000#define TEMP_HUMID_TIMEOUT    3000000/****************************************************************************//***        Type Definitions                                              ***//****************************************************************************//****************************************************************************//***        Local Function Prototypes                                     ***//****************************************************************************/PRIVATE uint16  u16ALSreadChannelResult_Wrapper(void);PRIVATE void    vLEDOn_Wrapper(uint32 u32LED);PRIVATE void    vLEDOff_Wrapper(uint32 u32LED);PRIVATE int32   i32GetBoardVoltage(void);PRIVATE bool_t  bGetBoardValue_Validator(uint64 u64Value, uint8 *au8ParamBuffer);PRIVATE uint8   u8ButtonReadRfd_Wrapper(void);PRIVATE uint8   u8ButtonReadFfd_Wrapper(void);PRIVATE int32   i32GetTemperature(void);PRIVATE int32   i32GetHumidity(void);PRIVATE void    vInitADC(uint8 u8Channel);#ifndef JENNIC_PCB_NTSPRIVATE void    vLCDWriteText_Wrapper(char *TextStr, uint32 u32Row, uint32 u32Col);#endif/****************************************************************************//***        Exported Variables                                            ***//****************************************************************************//****************************************************************************//***        Local Variables                                               ***//****************************************************************************//* [I SP001222_P1 313] begin */ATJ_DECLARE_VALIDATOR(LEDs)                   =   ATJ_VALIDATOR_RANGE(0, 3);#ifndef JENNIC_PCB_NTSATJ_DECLARE_VALIDATOR(LCD_Columns)          =   ATJ_VALIDATOR_RANGE(0, 128);ATJ_DECLARE_VALIDATOR(LCD_Rows)             =   ATJ_VALIDATOR_RANGE(0, 8);#endifATJ_DECLARE_CMD_PARAMS(BLO) = {    ATJ_CMD_PARAM(E_ATJ_INPUT,  E_ATJ_PARAM, 4, ATJ_PARAM_VAL_RANGE(LEDs)) /* [I SP001222_P1 319] */};ATJ_DECLARE_CMD_PARAMS(BLF) = {    ATJ_CMD_PARAM(E_ATJ_INPUT,  E_ATJ_PARAM, 4, ATJ_PARAM_VAL_RANGE(LEDs)) /* [I SP001222_P1 321] */};#ifndef JENNIC_PCB_NTSATJ_DECLARE_CMD_PARAMS(BTX) = {    ATJ_CMD_PARAM(E_ATJ_INPUT,  E_ATJ_PARAM, 40, ATJ_PARAM_VAL_NONE()), /* [I SP001222_P1 323] */    ATJ_CMD_PARAM(E_ATJ_INPUT,  E_ATJ_PARAM, 4, ATJ_PARAM_VAL_RANGE(LCD_Rows)), /* [I SP001222_P1 331] */    ATJ_CMD_PARAM(E_ATJ_INPUT,  E_ATJ_PARAM, 4, ATJ_PARAM_VAL_RANGE(LCD_Columns)) /* [I SP001222_P1 330] */};#endifPRIVATE tsATJCommandSet asATJPlatformCommandSet = {    ATJ_BEGIN_COMMAND_SET    ATJ_COMMAND_NP(BGV, i32GetBoardVoltage,              E_ATJ_OKP, bGetBoardValue_Validator), /* [I SP001222_P1 314] */    ATJ_COMMAND_NP(BGT, i32GetTemperature,               E_ATJ_OKP, bGetBoardValue_Validator), /* [I SP001222_P1 315] */    ATJ_COMMAND_NP(BGL, u16ALSreadChannelResult_Wrapper, E_ATJ_OKP, NULL), /* [I SP001222_P1 316] */    ATJ_COMMAND_NP(BGH, i32GetHumidity,                  E_ATJ_OKP, bGetBoardValue_Validator), /* [I SP001222_P1 317] */    ATJ_COMMAND_NP(BGR, u8ButtonReadRfd_Wrapper,         E_ATJ_OKP, NULL), /* [I SP001222_P1 328] */    ATJ_COMMAND_NP(BGF, u8ButtonReadFfd_Wrapper,         E_ATJ_OKP, NULL), /* [I SP001222_P1 329] */    ATJ_COMMAND(   BLO, vLEDOn_Wrapper,                  E_ATJ_OK,  NULL), /* [I SP001222_P1 318] */    ATJ_COMMAND(   BLF, vLEDOff_Wrapper,                 E_ATJ_OK,  NULL), /* [I SP001222_P1 320] */    #ifndef JENNIC_PCB_NTS    ATJ_COMMAND(   BTX, vLCDWriteText_Wrapper,           E_ATJ_OK,  NULL), /* [I SP001222_P1 322] */    #endif    ATJ_END_COMMAND_SET};/* [I SP001222_P1 313] end *//****************************************************************************//***        Exported Functions                                            ***//****************************************************************************//**************************************************************************** * * NAME: vATJ_PlatformCommandsInit * * DESCRIPTION: Initialise AT Jenie Platform Specific Commands * * HISTORY: * ****************************************************************************/PUBLIC void vATJ_PlatformCommandsInit(void){    vALSreset();    #ifdef JENNIC_PCB_NTS    bMCP9803_Init();        /* temp sensor */    vLedInitNts();    vButtonInitNts();    #else    vHTSreset();            /* temp/humidity sensor */    vLedInitRfd();    vButtonInitRfd();    vLcdResetDefault();    #endif    vInitADC(E_AHI_ADC_SRC_VOLT);   /* initialize ADC channel for voltage */    vAHI_AdcStartSample();    vALSstartReadChannel(0);    vATJ_ParserAddCommands(&asATJPlatformCommandSet);}/****************************************************************************//***        Local Functions                                               ***//****************************************************************************//**************************************************************************** * * NAME: bGetBoardValue_Validator * * DESCRIPTION: * Validates the returned board value by rejecting negative values caused * by a time-out during the ADC/sensor read process. * * * PARAMETERS:      Name            RW  Usage *                  u64Value        R   Voltage *                  *au8ParamBuffer W   Parameter Buffer * * RETURNS: Valid for postive voltages * ****************************************************************************/PRIVATE bool_t bGetBoardValue_Validator(uint64 u64Value, uint8 *au8ParamBuffer){    bool_t bValid = TRUE;    int32 i32BoardReading = (int32)u64Value;    if (0 > i32BoardReading) {        bValid = FALSE;    }    return bValid;}/**************************************************************************** * * NAME: vInitADC * * DESCRIPTION: * Initialises the ADC channel dedicated for battery voltage * * PARAMETERS:      Name            RW  Usage *                  u8Channel       R   Channel number * * RETURNS: None * ****************************************************************************/PRIVATE void vInitADC(uint8 u8Channel){    vAHI_ApConfigure(E_AHI_AP_REGULATOR_ENABLE,                     E_AHI_AP_INT_DISABLE,                     E_AHI_AP_SAMPLE_2,                     E_AHI_AP_CLOCKDIV_2MHZ,                     E_AHI_AP_INTREF);    /* Wait until the analogue peripheral regulator has come up before setting       the ADC. */    while(!bAHI_APRegulatorEnabled());    vAHI_AdcEnable(E_AHI_ADC_CONVERT_DISABLE,                   E_AHI_AP_INPUT_RANGE_2,                   u8Channel);}/**************************************************************************** * * NAME: u8ButtonReadRfd_Wrapper * * DESCRIPTION: * Calls the appropriate button read function depending on platform * * PARAMETERS:      Name            RW  Usage

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -