You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

213 lines
5.2 KiB

#include "app_config.h"
#include "../bsp/cs1232.h"
#include "../bsp/chipid.h"
#include "../msp/eeprom.h"
#include "../clib/clib.h"
GlobalParam G;
GlobalRegister R;
WR_Buf wr_buf;
void L3_param_init(void)
{
U8 i;
G.debug = 1;
//station模式状态
G.st_status = 0; //0:none 1:wifi_ok 2:tcp_connect_ok
//station模式sid
Lc_strcpy(G.st_sid,"ccsens");
//station模式pwd
Lc_strcpy(G.st_pwd,"ccsens123");
//ap模式状态
G.ap_status = 0;//0: none 1: ap_ok 2:tcp_server_ok
//ap模式sid
Lc_strcpy(G.ap_sid,"cc_pen_ap");
//ap模式pwd
Lc_strcpy(G.ap_pwd,"ccsens123");
wr_buf.wIndex = wr_buf.rIndex = 0;
wr_buf.maxsize = POINT_LEN;
for(i=0;i<wr_buf.maxsize;i++)
{
wr_buf.buf[i].time = wr_buf.buf[i].x_axis = wr_buf.buf[i].y_axis = 0;
}
}
//读取reg内容,写入iap
void L3_reg_2_iap(void)
{
#if 0
iapData.slaver_id = R.p.slaver_id;
iapData.adc_ch_status = R.p.adc_ch_status;
iapData.weight_max = R.p.weight_max;
iapData.lmd = R.p.lmd;
iapData.adc_blur_mid = R.p.adc_blur_mid;
iapData.adc_blur_avg = R.p.adc_blur_avg;
iapData.adc_blur_shift[0] = R.p.adc_blur_shift[0];
iapData.adc_blur_shift[1] = R.p.adc_blur_shift[1];
iapData.adc_blur_shift[2] = R.p.adc_blur_shift[2];
iapData.adc_blur_threshold[0] = R.p.adc_blur_threshold[0];
iapData.adc_blur_threshold[1] = R.p.adc_blur_threshold[1];
//写入eeprom
if(L1_eep_write_block(D_EEP_PARAM_IN_SECTOR, D_EEP_PARAM_IN_BLOCK, (U8*)&iapData,sizeof(IapData),TRUE) == 0)
{
L0_uart0_sendstr("e2p write success");
}
if(L1_eep_write_block(D_EEP_PARAM_IN_SECTOR, D_EEP_PARAM_IN_BLOCK, D_EEP_SECTOR_BLOCK_SIZE, (U8*)&R.p,sizeof(R.p),TRUE) == 0)
{
L0_uart0_sendstr("e2p write success");
return;
}
L0_uart0_sendstr("e2p write failed");
#endif
}
//读取iap内容,写入reg
void L3_iap_2_reg(void)
{
#if 0
if(L1_eep_read_block(D_EEP_PARAM_IN_SECTOR, D_EEP_PARAM_IN_BLOCK, (U8*)&iapData, NULL) == 1)
{
L0_uart0_sendstr("e2p read failed");
}
L0_uart0_sendstr("e2p read success");
R.p.slaver_id = iapData.slaver_id;
R.p.adc_ch_status = iapData.adc_ch_status;
R.p.weight_max = iapData.weight_max ;
R.p.lmd = iapData.lmd;
R.p.adc_blur_mid = iapData.adc_blur_mid;
R.p.adc_blur_avg = iapData.adc_blur_avg;
R.p.adc_blur_shift[0] = iapData.adc_blur_shift[0];
R.p.adc_blur_shift[1] = iapData.adc_blur_shift[1];
R.p.adc_blur_shift[2] = iapData.adc_blur_shift[2];
R.p.adc_blur_threshold[0] = iapData.adc_blur_threshold[0];
R.p.adc_blur_threshold[1] = iapData.adc_blur_threshold[1];
if(L1_eep_read_block(D_EEP_PARAM_IN_SECTOR, D_EEP_PARAM_IN_BLOCK, D_EEP_SECTOR_BLOCK_SIZE, (U8*)&R.p, NULL) == 0)
{
L0_uart0_sendstr("e2p read success");
return;
}
L0_uart0_sendstr("e2p read failed");
#endif
}
void L3_reg_reset(void)
{
U8 i = 0;
R.pen_sta = 0;
R.pen_net_sta = 0;
R.pen_ele_sta = 0;
R.question_sta = 0;
R.oid3_order = 0;
R.pack_order = 0;
R.frame_order = 0;
R.points.x_axis = R.points.y_axis = 0;
R.points.time = 0;
for(i=0;i<CCMD_SLAVER_INFO_MAX;i++)
{
G.ccmd_slaver_info[i].mask = 0;
}
//认证包
G.ccmd_slaver_info[0].slaver = SLAVER_TCP_SERVER_ID;
G.ccmd_slaver_info[0].oper = MODBUS_OPER_AUTH;
G.ccmd_slaver_info[0].mask = 0;
//心跳包
G.ccmd_slaver_info[1].slaver = SLAVER_TCP_SERVER_ID;
G.ccmd_slaver_info[1].oper = MODBUS_OPER_PING;
G.ccmd_slaver_info[1].mask = 0;
//数据包
G.ccmd_slaver_info[2].slaver = SLAVER_TCP_SERVER_ID;
G.ccmd_slaver_info[2].oper = MODBUS_OPER_WRITE_M;
G.ccmd_slaver_info[2].reg = 0x20;
G.ccmd_slaver_info[2].regnum = 0x03;//基础数量,程序每次应动态添加点数
G.ccmd_slaver_info[2].bytes = G.ccmd_slaver_info[2].regnum * 2;
G.ccmd_slaver_info[2].buf = (U8*)&R.pack_order;
G.ccmd_slaver_info[2].mask = 0;
G.ccmd_slaver_info[2].extra_num =0;
G.modbusstmp = 0;
G.authed = 0;
G.flowStarted = 0;
G.flowStartVal = 1;
}
void L3_reg_init(void)
{
//R.reserved1 = R.reserved2 = R.reserved3 = 0x55;
//R.zero = 0;
//R.status_eep_save = 0;
L3_reg_reset();
L3_iap_2_reg();
}
void Lc_buf_full(WR_Buf *p)
{
if((p->rIndex+1)%(p->maxsize) == p->wIndex)
p->full = 1;
}
U16 Lc_write_cyc_buf(PenPoint *wbuf ,WR_Buf *wp ,U16 wlen)
{
U8 nulllen = (wp->maxsize - wp->wIndex + wp->rIndex - 1) % wp->maxsize;
if(nulllen >= wlen)
{
wp->readdr = (wp->wIndex + wlen) % wp->maxsize;
if(wp->readdr > wp->wIndex || wp->readdr == 0)
{
Lc_buf_copy_uc((U8 *)&wp->buf[wp->wIndex], (U8 *)wbuf, wlen);
}
else
{
wp->relen = wlen - wp->readdr;
Lc_buf_copy_uc((U8 *)&wp->buf[wp->wIndex], (U8 *)wbuf, wp->relen);
Lc_buf_copy_uc((U8 *)&wp->buf[0], (U8 *)(wbuf+wp->relen), wp->readdr);
}
wp->wIndex = wp->readdr;
return sizeof(wbuf);
}
else
{
//L0_uart0_sendstr("X");
return 0;
}
}
U16 Lc_read_cyc_buf(PenPoint *rbuf ,WR_Buf *rp ,U16 rlen)
{
U8 validlen = (rp->maxsize - rp->rIndex + rp->wIndex) % rp->maxsize;
if(validlen >= rlen)
{
rp->readdr = (rp->rIndex + rlen) % rp->maxsize;
if(rp->readdr < rp->wIndex || rp->readdr == 0)
{
Lc_buf_copy_uc((U8 *)rbuf, (U8 *)&rp->buf[rp->rIndex],rlen);
}
else
{
rp->relen = rlen - rp->readdr;
Lc_buf_copy_uc((U8 *)rbuf,(U8 *) &rp->buf[rp->rIndex], rp->relen);
Lc_buf_copy_uc((U8 *)(rbuf+rp->relen), (U8 *)&rp->buf[0], rp->readdr);
}
rp->rIndex = rp->readdr;
return sizeof(rbuf);
}
else
{
return 0;
}
}