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.

409 lines
11 KiB

//////////////////////////////////////////////////////////////////////////
/// COPYRIGHT NOTICE
/// Copyright (c) 2018, ���ؿƼ�
/// All rights reserved.
///
/// @file tpc_fsk.c
/// @brief transaction protocol control of fsk
///
///�����ļ�ʵ�ֵĹ��ܵ�������
///
/// @version 1.1 CCsens technology
/// @author CC
/// @date 20150102
///
///
/// @version 1.2 CCsens technology
/// @author CC
/// @date 20180308
/// @info ����
//
//////////////////////////////////////////////////////////////////////////
/*****************************************************************************
@version 1.2
update by cc @201501101001
Զ һ ÿǶĻǷֿн ǸӵĻӦü
Ҫƽ.
clib/uartlib.c:
õĺ Ӳ޹
ոЭĴ
ôģʽ(ڵͨѶ)ĺ,
һЩģʽ(lcdȹ)Ҳʹ
void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...)
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
msp/uartx.c ײ cpu
L0_UART0_Init
UART0_IRQHandler
L0_Usend_uc----------s_at0
-----------------------------------------------------------------------------------------
********************************************************************************/
#ifndef __TPC_UART_H_
#define __TPC_UART_H_
#include "../clib/Type.h"
#include "../bsp/bsp_config.h"
// 20170609
///-----------------------------------------------------
//L0_type_byte(ts_cmd_pro0)[]
//#define D_CMD_Filter1 0xA5
//#define D_CMD_Filter2 0x5A
#define D_CMD_Filter1 0x0a
#define D_CMD_Filter2 0x0d
#define D_CMD_Filter1_ff 0xFF
#define D_CMD_Filter2_fe 0xFE
///Э������: ʮ������Э��1->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
/// ���͵�����Ϊ��fx��ͷ��ʮ�����ƵĶ�Э�飬�ͳ�Э������������֡ͷ����Ϊ1���ֽ��⣬���ݵij���Ҳ�DZȽϾ��򣬴󲿷ְ�λ�����ģ��ʺϵͲ�����rf433֮���Ĵ���
///����5�� �ʺ��ڴ�������ʱ�ϴ�
/// R1
///� 7 6 5 4 3 2 1 0
///���� ����������AS1 (0---15) ����������AS2 (0---15)
/// R2
///� 7 6 5 4 3 2 1 0
///���� ��ѹPress (0---15) open mic
/// R3
///� 7 6 5 4 3 2 1 0
///���� Temp (0---15) Gsensor(0---15)
typedef struct
{//8byte
/////////
vU8 as2:4;
vU8 as1:4;
/////////
vU8 mic:3;
vU8 open:1;
vU8 press:4;
////////////////
vU8 Gsensor:4;
vU8 temp:4;
///////////
}TS_P_pc_dat;
typedef struct
{//8byte
/////////
U8 cameraBoardPower; //��ǰ�е�4�����ɼ���ͼ������
vU16 paperNum:10; //10bitֽ������ ��ʾ��������1024 ʵ��170��
vU16 cameraIndex:4; //����ͷ����
vU16 cameraWorking:1; //�Ƿ���������
vU16 LowPower:1; // =1 lowPower ������Ҫ����,����δ���ӵ���
}TS_P_paper;
//NUM: 0 1 2 3 4
// Fx R1 R2 R3 ocr
// F+�ӻ� R1 R2 R3 У��
typedef struct _s_P_rf_
{//8byte
vU8 slave:4;
vU8 filter1:4;
////////////////
TS_P_paper r123;
vU8 ocr;
}TS_P_rf;
typedef struct _s_P_rf433_
{//8byte
vU8 ha;
// vU8 hb;
vU8 slave:4;
vU8 filter1:4;
////////////////
TS_P_paper r123;
vU8 ocr;
/// vU8 hc;
}TS_P_rf433;
//NUM: 0 1 2 3 4
// Fx R1 R2 R3 ocr
// F+�ӻ� R1 R2 R3 У��
typedef struct
{//8byte
vU8 slave:4;
vU8 filter1:4;
////////////////
vU8 G1;
////////////////
vU8 G2;
////////////////
vU8 Tmp:4;
vU8 Press:4;
////////////////
vU8 ocr;
}TS_P_as;
typedef struct
{//8byte
vU8 slave:4;
vU8 filter1:4;
////////////////
vU8 cmd;
////////////////
vU8 R2;
////////////////
vU8 R3;
////////////////
vU8 ocr;
}TS_P_debug;
#define D_HETU_FX_fi 0xa0 ///2018.7.7
#define D_HETU_FX_H4 0xf0 ///2018.7.7
#define D_HETU_FX_buf_max 4 //max ����ָʵ�ʵ�����,num����cnt��ָ��ʱ��
/// Hex RTU Protocol 0xFx
typedef struct
{//8byte
vU8 reg;
vU8 n;
vU8 head; //���ձ�־ͷ��־
vU8 ok; //����Э��ok��־
vU8 num;
// vU8 cmd;
vU8 ocr;
// vU8 *sp;
U8 buf[D_HETU_FX_buf_max+1];
}TS_Handle_PH1;
extern void L1_s2b_PH1 (TS_Handle_PH1 *p);// reentrant;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
///Э������: ʮ������Э��2->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
/// ���͵�����Ϊ��ff fe��ͷ��ʮ�����Ƶij�Э�飬������������
///FF FE 52 03 98 77 88 99 ��ַΪ0x52�Ĵӻ�, ��PC������3������0x77,0x88,0x99
///FF FE 06 03 e5 77 88 99 ����(0x06)Я����3������0x77,0x88,0x99��У��Ϊ0x98(=0x06+0x03+0x77+0x88+0x99�������ݵĺ�)
///��:У��λ=0x12+0x34+0x56=0x9c;ȡ��λ�ֽڵõ�OCR=0x9c
typedef struct
{//8byte
vU8 filter1;
vU8 filter2;
vU8 addr; //���ͷ��ĵ�ַ������
vU8 num; //���յ������ݵļ����� �������ݽ��ն��仯ע�����ݳ��ȵķ�Χ
vU8 ocr;
vU8 buf[4];//--->_s_P_pc_dat_
}TS_P_pc;
// FF FE 10 02 0C 51 03
// cashe[1] cashe[0] ���� ���� У�� ����1 �ӻ� ����2 ����
// filter2 filter1
struct _s_PH2_FFFE_
{//8byte
vU8 cashe[2];
vU8 reg;
vU8 max; //���յ�����Ŀ������ֵ
vU8 head_0;
vU8 head_1;
// vU8 sub_num; //���յ�����Ŀע�����ݳ��ȵķ�Χ
vU8 head; //���ձ�־ͷ��־
vU8 ok; //����Э��ok��־
vU8 num;
vU8 *sp;
TS_P_pc s_FF;
// U8 pro[16]; ///��������
};
extern void L1_s2b_PH2(struct _s_PH2_FFFE_ *p);// reentrant;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
///Э������: ʮ������Э��3->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
/// ���͵�����Ϊ��ff fe��ͷ��ʮ�����Ƶij�Э�飬�ڰ�����׼��modbusЭ��
///FF FE 08 52 16 11 22 33 44 F5 9F ������һ��modbusЭ����(8������52 16 11 22 33 44 F5 9F )
/// Э����������˼Ϊ��ַΪ0x52�Ĵӻ�, ������16 ����Ϊ11 22 33 44,У���� F5 9F
/// У�����ķ�ΧΪ
#define TS_PH3_FILTER0 0xFF
#define TS_PH3_FILTER1 0xFE
#define D_s_PH3_ccmodbus_max (16 + 8)
typedef struct
{
U8 filter0;
U8 filter1;
U8 num;
U8 src; //Դ�豸ID
U8 dst; //Ŀ���豸ID
U8 oper;
U8 buf[D_s_PH3_ccmodbus_max - 8];
U8 crc[2];
}TS_PH3_ccmodbus;
typedef struct
{//8byte
U8 cashe[2];
U8 reg;
U8 max; //���յ�����Ŀ������ֵ
U8 head_0;
U8 head_1;
// vU8 sub_num; //���յ�����Ŀע�����ݳ��ȵķ�Χ
vU8 head; //���ձ�־ͷ��־
vU8 ok; //����Э��ok��־
vU8 num;
vU8 *sp;
U8 _buf[D_s_PH3_ccmodbus_max]; ///��������
U8 buf[D_s_PH3_ccmodbus_max];
}TS_Handle_PH3;
extern void L1_s2b_PH3_init(TS_Handle_PH3 *p);
extern void L1_s2b_PH3(TS_Handle_PH3 *p);// reentrant;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
///Э������: �ַ���Э��1->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
/// ���͵�����Ϊ�Իس�����(��0x0a 0x0d)Ϊ��β���ַ��ͳ�Э�飬���������Ƚ���ȷ�������ַ��Ͷ�Ӧ�����ݣ��ʺ�debug������Ҫ�󲻸ߣ�������
/// �����ij���
///-----------------------------------------------------------------------------------------
#define D_s_SSTR_0D0A_len 16 //str����Э����Ҫ���ȴ�һЩ������bug�ĵط�������Ϊ����64bytes������
struct _s_PC1_0D0A_
{//8byte
vU8 reg;
// vU8 sub_num; //���յ�����Ŀע�����ݳ��ȵķ�Χ
vU8 head; //���ձ�־ͷ��־
vU8 cashe[2];
//vU8 filter1;
//vU8 filter2;
vU8 num; //���յ������ݵļ����� �������ݽ��ն��仯ע�����ݳ��ȵķ�Χ
vU8 ok; //����Э��ok��־
vU8 max; //���յ�����Ŀ������ֵ
vU8 buf[D_s_SSTR_0D0A_len+1];//buffer �ĵ�һλ�� ����
// U8 pro[16]; ///��������
};
extern void L1_s2b_PC1(struct _s_PC1_0D0A_ *p);// reentrant;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
///modebusЭ��ͨѶʹ��>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#ifdef doc_98098908
///Modbus��������RTUģʽͨ�ţ�����Ϣ�е�ÿ��8Bit�ֽڰ���ԭֵ���ͣ�������������63H��RTU��ֱ�ӷ���01100011��
////���ַ�ʽ����Ҫ�ŵ��ǣ�����֡����֮��û�м�������ͬ�������´������ݵ��ܶ�Ҫ��ASCII�ߣ������ٶȸ��� [1] ��
////ASCIIģʽʹ�õ��ַ�����RTUģʽ����������ASCII���ݵ������ʹ�����Ϊ����һЩ�����⣬��RTUģʽʱ�����ַ���������������������ʽ���ͣ�
///��ASCIIģʽ���ַ�֮���ɲ�������1s�ļ���������Ӧ�ٶȽ����Ļ���
///01 16 1000 1234 ABCD
///���δ�������˼ �� �� ��ַ 01 �� ������ д�� 1000 1234 �� ������ô����
////��ַ�� ����ָ ��վ�ĵ�ַ������һ����Ƶ����������һ���DZ���������ַ��������ͨѶ��ַ
///������ ������Ҫ�������飬ͨѶ��Ŀ�� ���Ƕ�д���ݣ����� MODBUS ��������Ȼ�ܶ࣬����ֻ�����������dz��õģ����Ƕ���д��
///���Ĺ�������03 д�Ĺ�������16��ע�⣬�����Ķ�д����һ����д16��λ��Ҳ����һ��WORD.
///Address Function Data Check
///8-Bits 8-Bits N x 8-Bits 16-Bits
/// ���ܣ�Function����
/// ���������������˱�Ѱַ�����ն�ִ�к��ֹ��ܡ��±��г��˸�ϵ���DZ��õ��Ĺ����룬�Լ����ǵ������͹��ܡ�
/// ���� ���� ��Ϊ
/// 03 �����ݼĴ��� ����һ���������Ĵ����ĵ�ǰ������ֵ
/// 16 Ԥ�ö��Ĵ��� �趨������ֵ��һϵ�ж��Ĵ�����(����ACRXXXE����)
///��ɢ���������������������Ƕ�ͬһ�����źŵIJ�ͬ˵����
///0��ʾ�Ͽ���1��ʾ��ͨ����PLC�����ƿ����豸�У�����һ�ֲ����͵ı���?
///����Զ///��PLC�е�Y/Q�������������͵��ź�
///cc�Ľ�����modebusЭ�飬������һ��֡ͷ
/// ff fe num add function dat check
#endif
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
///Э��ͨѶʹ��>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define D_s_protocol_len 32
struct _s_protocol_
{//8byte
vU8 rbr;
vU8 reg;
vU8 cashe[3];
vU8 filter1;
vU8 filter2;
vU8 (*pfun_get)(void);
vU8 num; //���յ�����Ŀע�����ݳ��ȵķ�Χ
vU8 sub_num; //���յ�����Ŀע�����ݳ��ȵķ�Χ
vU8 head; //���ձ�־ͷ��־
vU8 ok; //����Э��ok��־
vU8 data_ok; //����Э��ok��־
vU8 ucXor;
vU8 array[D_s_protocol_len];//buffer �ĵ�һλ�� ����
vU8 buf[D_s_protocol_len];//buffer �ĵ�һλ�� ����
vU8 buf2[12];//buffer �ĵ�һλ�� ����
};
extern void L1_uart_2buf(struct _s_protocol_ *p);
//485
///Э������: ʮ������Э��2 ����ַ�ж��� �ڶ����ǵ�ַ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define D_HETU_FXA 0xaa
#define D_HETU_FXA_buf_max 8 //max ����ָʵ�ʵ�����,num����cnt��ָ��ʱ��
/// Hex RTU Protocol 0xFx
typedef struct
{//8byte
vU8 reg;
vU8 n;
vU8 head; //���ձ�־ͷ��־
vU8 ok; //����Э��ok��־
vU8 num;
vU8 add; ///���ݵ�ַ
vU8 ocr;
// vU8 *sp;
U8 buf[D_HETU_FXA_buf_max + 1];
}TS_Handle_PH1A;
typedef struct
{
vU8 filter;
vU8 src;
vU8 dst;
vU8 dat[4];
vU8 ocr;
}TS_PH1A_DAT;
extern void L1_s2b_PH1A (TS_Handle_PH1A *p);
#endif /* end __TPC_UART_H_ */
/*****************************************************************************
** End Of File
******************************************************************************/