📄 app.c
字号:
/*
****************************************************************************
* 宁波市科技园区创业大厦六楼
* 宁波中科集成电路设计中心 版权所有 Copyright 2005
*
*文件名: llc.c
*程序员:
*主要内容:定时采集数据,并通过CC1000发送
*完成日期:2005.3.28
****************************************************************************
*/
#include "os.h"
#include "sensor.h"
#include "message.h"
#include "led.h"
#include "macClock.h"
#include "mac.h"
extern uint8_t OS_LOCAL_ADDRESS;
extern uint8_t OS_BCAST_ADDR;
uint8_t OS_GROUP = OS_DEFAULT_GROUP;
uint8_t LLCpacketReadingNumber;
uint8_t LLCPacketNumber;
OSMACMsg LLCmsg[2];
uint8_t LLCcurrentMsg;
/*************************************************************************
*功能描述:初始化
*参数说明:无
*返回值: 无
**************************************************************************/
result_t LLCStdControlInit(void)
{
LedInit();
LedRedOff();
LedGreenOff();
LedYellowOff();
SensorPhoOStdControlInit();
MACInit();
{ uint8_t atomicState = AtomicStart();
{
LLCcurrentMsg = 0;
LLCpacketReadingNumber = 0;
LLCPacketNumber = 0;
}
AtomicEnd(atomicState); }
return SUCCESS;
}
/*************************************************************************
*功能描述:设置1号定时器的定时类型和间隔,并启动
*参数说明:定时器类型,时间间隔(ms)
*返回值: 执行结果
**************************************************************************/
result_t LLCTimerStart(uint8_t interval)
{
ClockSet(interval);
return SUCCESS;
}
/*************************************************************************
*功能描述:启动底层
*参数说明:
*返回值:
**************************************************************************/
result_t LLCStdControlStart(void)
{
SensorPhoOStdControlStart();
LLCTimerStart(125);
return SUCCESS;
}
result_t LLCADCGetData(void)
{
unsigned char result;
result = SensorExternalPhotoADCGetData();
return result;
}
/*************************************************************************
*功能描述:由设定的定时器时钟到达触发,调用采集函数
*参数说明:无
*返回值:
**************************************************************************/
result_t LLCTimerFired(void)
{
return LLCADCGetData();
}
/*************************************************************************
*功能描述:打包数据,并调用MAC进行广播发送
*参数说明:目的节点号,数据长度,数据包地址
*返回值:
**************************************************************************/
result_t LLCDataMsgSend(uint8_t addr, uint8_t length, OSMACMsgPtr data)
{
unsigned char result;
if (length > APP_PKT_LEN)
{
return FALSE;
}
if (addr == OS_BCAST_ADDR)
{
result = MACBroadcastMsg(data, length);
}
else
result = 1;
return result;
}
/*************************************************************************
*功能描述:发送任务处理
*参数说明:
*返回值:
**************************************************************************/
void LLCdataTask(void)
{
SensorMsg *pack;
{ uint8_t atomicState = AtomicStart();
{
pack = (SensorMsg *)LLCmsg[LLCcurrentMsg].data;
LLCpacketReadingNumber = 0;
pack->seqNo = LLCPacketNumber;
}
AtomicEnd(atomicState); }
if (LLCDataMsgSend(OS_BCAST_ADDR,
sizeof(SensorMsg), &LLCmsg[LLCcurrentMsg]))
{
{ uint8_t atomicState = AtomicStart();
{
LLCcurrentMsg ^= 0x1;
}
AtomicEnd(atomicState); }
}
}
/*************************************************************************
*功能描述:从ADC获得数据,并进行缓存,调用发送处理函数
*参数说明:传感采集到的数据
*返回值:
**************************************************************************/
result_t LLCADCDataReady(uint16_t data)
{
SensorMsg *pack;
{ uint8_t atomicState = AtomicStart();
{
pack = (SensorMsg *)LLCmsg[LLCcurrentMsg].data;
pack->data[LLCpacketReadingNumber++] = data;
if (LLCpacketReadingNumber == BUFFER_LEN) {
OSPostTask(LLCdataTask); // 如果缓存区已满,则发送
LLCPacketNumber++;
}
}
AtomicEnd(atomicState); }
if (data > 0x0270) {
LedRedOn();
}
else {
LedRedOff();
}
if (data < 0x0230) {
LedGreenOn();
}
else {
LedGreenOff();
}
return SUCCESS;
}
result_t LLCDataMsgSendDone(OSMACMsgPtr sent, result_t success)
{
return SUCCESS;
}
OSMACMsgPtr LLCResetCounterMsgReceive(OSMACMsgPtr m)
{
{ uint8_t atomicState = AtomicStart();
{
LLCPacketNumber = 0;
}
AtomicEnd(atomicState); }
return m;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -