12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #ifndef __NODELINK_MASTER_H__
- #define __NODELINK_MASTER_H__
- #include "NodeLinkCommon.h"
- #ifndef NODELINK_DEVICE_NUMBER
- #define NODELINK_DEVICE_NUMBER 8 //最多8个从站,
- #endif
- #define NL_MASTER_EVENT_FOUND_DEVICE 0x01
- typedef struct nodelink_device nodelink_device_t;
- typedef struct
- {
- void (*on_recv)(nodelink_device_t * device,unsigned char * data); //设备输入
- int (*on_send)(nodelink_device_t * device,unsigned char *data); //设备控制输出
- void (*on_timeout)(nodelink_device_t * device); //设置定时时间,单位微秒
- } nodelink_device_ops;
- struct nodelink_device
- {
- unsigned char id; //分配的ID
- unsigned char model; //设备型号
- unsigned char last_cmd; //上一次命令,提供外部用的状态
- unsigned char last_status; //上一次状态,提供外部用的状态
- unsigned char in_index; //输入数据开始编号
- unsigned char in_count; //输入计数
- unsigned char out_index; //输出数据开始编号
- void * user_data; //外部对象接口
- nodelink_device_ops * ops; //设备对应处理接口
- unsigned char uniqueid; //唯一ID
- unsigned short txcount; //发送计数
- };
- typedef struct nodelink_master nodelink_master_t;
- struct nodelink_master
- {
- unsigned char bus_status; //总线状态,0xff为复位状态,会发送复位命令,0x00为初始化状态,会分配ID,0x01为工作状态
- unsigned char dev_count; //设备计数
- int count; //总线一些操作的计数
- int step;
- nodelink_device_t device[NODELINK_DEVICE_NUMBER + 1]; //设备缓存
- unsigned char data_in[NATIVE_DATA_BUFFER_SIZE]; //数据输入缓冲
- unsigned char data_out[NATIVE_DATA_BUFFER_SIZE]; //数据输出缓冲
- unsigned char code[16]; //16字节标识码
- void (*callback)(nodelink_master_t * , char , void *);
- };
- void nodelink_master_set_callback(nodelink_master_t * master,
- void(*)(nodelink_master_t * , char , void *));
- void nodelink_master_set_code(nodelink_master_t * master, unsigned char * code);
- void nodelink_master_init(nodelink_master_t * master);
- void nodelink_master_reset(nodelink_master_t *master);
- void nodelink_master_begin_scan(nodelink_master_t *master);
- void nodelink_master_recv(nodelink_master_t *master,
- unsigned char *src,
- int len);
- int nodelink_master_send(nodelink_master_t *master,
- unsigned char *dst);
- #endif
|