8c2952457
김태훈
응용 프로그램 추가
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
/**
@file uart-packet-dle.h
@date 2010-09-17
@author 오재경 freefrug@falinux.com
@brief uart 통신형태를 분석하고 관리한다.
dle / stx / data(crc16) / dle / etx
@modify
@todo
@bug
@remark
@warning
*/
//
// 저작권 에프에이리눅스(주)
// 외부공개 금지
//
//----------------------------------------------------------------------------
#ifndef _UART_PACKET_DKE_H_
#define _UART_PACKET_DKE_H_
#define UART_PACKET_MAX_SIZE 4096
enum { ANSEQ_FIND_STX=0, ANSEQ_FIND_ETX };
enum { ANERR_NONE=0, ANERR_CRC };
typedef void(*on_uart_packet_t)( poll_obj_t *obj, char *buf, int count, int error );
/// 시리얼패켓 분석용 구조체
typedef struct
{
// 사용자 변경변수
int stx;
int etx;
int dle;
unsigned short (*make_crc16)(char *buf, int count ); // 기본적인 crc 함수가 매치된다.
// 사용자 변경불가
poll_obj_t *obj;
int an_seq;
int an_cnt;
int dle_flag;
int data_cnt;
int error;
char data_buf[UART_PACKET_MAX_SIZE];
on_uart_packet_t on_packet;
} uart_packet_analysis_t;
#ifdef __cplusplus
extern "C" {
#endif
/// @{
/// @brief 외부에서 사용할수 있는 객체함수 리스트
extern void upacket_dle_create( poll_obj_t *obj, on_uart_packet_t callback ); /// uart 패켓 관린 객체 생성
extern void upacket_dle_free( poll_obj_t *obj ); /// uart 패켓 관린 객체 해제
extern void upacket_dle_clear( uart_packet_analysis_t *up ); /// uart 패켓분석 클리어
extern int upacket_dle_read_from_uart( poll_obj_t *obj, on_uart_packet_t callback ); /// uart 에서 데이타를 읽어 패켓을 분석한 후 패켓이 만들어지면 등록된 콜백함수를 호출한다.
extern int upacket_dle_write_to_uart( poll_obj_t *obj, const char *data_buf, int count ); /// uart 에 패켓을 만들어 전송한다.
/// @}
#ifdef __cplusplus
}
#endif
#endif
|