📄 example1.c
字号:
/**************************************************************************** * * MODULE: example1.c * * COMPONENT: $RCSfile: $ * * VERSION: $Name: $ * * REVISION: $Revision: $ * * DATED: $Date: $ * * STATUS: $State: Exp $ * * AUTHOR: Mozammul Ahmed * * DESCRIPTION: * * LAST MODIFIED BY: $Author: $ * $Modtime: $ * ****************************************************************************
*
* 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 2005, 2006. All rights reserved
*
****************************************************************************/
/****************************************************************************//*** Include files ***//****************************************************************************/#include <jendefs.h>#include <AppHardwareApi.h>#include <AppQueueApi.h>
/****************************************************************************//*** Macro Definitions ***//****************************************************************************//****************************************************************************//*** Type Definitions ***//****************************************************************************//****************************************************************************//*** Local Function Prototypes ***//****************************************************************************/
PRIVATE void vInitSystem(void);
PRIVATE void vProcessEventQueues(void);
PRIVATE void vProcessIncomingHwEvent(AppQApiHwInd_s *psAHI_Ind);
/****************************************************************************//*** Exported Variables ***//****************************************************************************//****************************************************************************//*** Local Variables ***//****************************************************************************/
PRIVATE bool_t bToggle = TRUE;
/****************************************************************************//*** Exported Functions ***//****************************************************************************//**************************************************************************** * * NAME: AppColdStart * * DESCRIPTION: * Entry point for application from boot loader. Initialises system and runs * main loop. * * RETURNS: * Never returns. * ****************************************************************************/PUBLIC void AppColdStart(void){
vInitSystem();
while (1) {
/* process any events that occurs */ vProcessEventQueues(); }}/**************************************************************************** * * NAME: AppWarmStart * * DESCRIPTION: * Entry point for application from boot loader. Simply jumps to AppColdStart * as, in this instance, application will never warm start. * * RETURNS: * Never returns. * ****************************************************************************/PUBLIC void AppWarmStart(void){ AppColdStart();}/****************************************************************************//*** Local Functions ***//****************************************************************************/
/**************************************************************************** * * NAME: vInitSystem * * DESCRIPTION: * * RETURNS: * void * ****************************************************************************/PRIVATE void vInitSystem(void){
/* Setup interface to MAC */
u32AppQApiInit(NULL, NULL, NULL); u32AHI_Init();
/* Set SW1(dio9) to input and LED1(dio14) to output */
vAHI_DioSetDirection(E_AHI_DIO9_INT, 0);
vAHI_DioSetDirection(0, E_AHI_DIO14_INT);
/* enable pullups on all inputs/unused pins */
vAHI_DioSetPullup(!E_AHI_DIO14_INT, E_AHI_DIO14_INT);
/* turn LED off */
vAHI_DioSetOutput(E_AHI_DIO14_INT, 0);
/* set interrupt for DIO9 to occur on button release - rising edge */
vAHI_DioInterruptEdge(E_AHI_DIO9_INT, 0);
/* enable interrupt for DIO9 */
vAHI_DioInterruptEnable(E_AHI_DIO9_INT, 0);
}/**************************************************************************** * * NAME: vProcessEventQueues * * DESCRIPTION: * Check each of the three event queues and process and items found. * * PARAMETERS: Name RW Usage * None. * * RETURNS: * None. * * NOTES: * None. ****************************************************************************/PRIVATE void vProcessEventQueues(void){ MAC_MlmeDcfmInd_s *psMlmeInd; MAC_McpsDcfmInd_s *psMcpsInd; AppQApiHwInd_s *psAHI_Ind; /* Check for anything on the MCPS upward queue */ do { psMcpsInd = psAppQApiReadMcpsInd(); if (psMcpsInd != NULL) { /* normally a user provided function such as
vProcessIncomingMcps(psMcpsInd) would be called here */ vAppQApiReturnMcpsIndBuffer(psMcpsInd); } } while (psMcpsInd != NULL); /* Check for anything on the MLME upward queue */ do { psMlmeInd = psAppQApiReadMlmeInd(); if (psMlmeInd != NULL) { /* normally a user provided function such as
vProcessIncomingMlme(psMlmeInd) would be called here */ vAppQApiReturnMlmeIndBuffer(psMlmeInd); } } while (psMlmeInd != NULL); /* Check for anything on the AHI upward queue */ do { psAHI_Ind = psAppQApiReadHwInd(); if (psAHI_Ind != NULL) { vProcessIncomingHwEvent(psAHI_Ind); vAppQApiReturnHwIndBuffer(psAHI_Ind); } } while (psAHI_Ind != NULL);}/**************************************************************************** * * NAME: vProcessIncomingHwEvent * * DESCRIPTION: * Process any hardware events. * * PARAMETERS: Name RW Usage * psAHI_Ind * * RETURNS: * None. * * NOTES: * None. ****************************************************************************/PRIVATE void vProcessIncomingHwEvent(AppQApiHwInd_s *psAHI_Ind){ /* Check to see if hardware indication was from DIO9 */
if ((psAHI_Ind->u32DeviceId == E_AHI_DEVICE_SYSCTRL)
&& (psAHI_Ind->u32ItemBitmap & E_AHI_DIO9_INT))
{
if(bToggle)
{
/* drive DIO14 LOW */
vAHI_DioSetOutput(0, E_AHI_DIO14_INT);
}
else
{
/* drive DIO14 HIGH */
vAHI_DioSetOutput(E_AHI_DIO14_INT, 0);
}
bToggle = !bToggle;
}
}/****************************************************************************//*** END OF FILE ***//****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -