NodeLinkMaster.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #ifndef __NODELINK_MASTER_H__
  2. #define __NODELINK_MASTER_H__
  3. #include "NodeLinkCommon.h"
  4. #ifndef NODELINK_DEVICE_NUMBER
  5. #define NODELINK_DEVICE_NUMBER 8 //最多8个从站,
  6. #endif
  7. #define NL_MASTER_EVENT_FOUND_DEVICE 0x01
  8. typedef struct nodelink_device nodelink_device_t;
  9. typedef struct
  10. {
  11. void (*on_recv)(nodelink_device_t * device,unsigned char * data); //设备输入
  12. int (*on_send)(nodelink_device_t * device,unsigned char *data); //设备控制输出
  13. void (*on_timeout)(nodelink_device_t * device); //设置定时时间,单位微秒
  14. } nodelink_device_ops;
  15. struct nodelink_device
  16. {
  17. unsigned char id; //分配的ID
  18. unsigned char model; //设备型号
  19. unsigned char last_cmd; //上一次命令,提供外部用的状态
  20. unsigned char last_status; //上一次状态,提供外部用的状态
  21. unsigned char in_index; //输入数据开始编号
  22. unsigned char in_count; //输入计数
  23. unsigned char out_index; //输出数据开始编号
  24. void * user_data; //外部对象接口
  25. nodelink_device_ops * ops; //设备对应处理接口
  26. unsigned char uniqueid; //唯一ID
  27. unsigned short txcount; //发送计数
  28. };
  29. typedef struct nodelink_master nodelink_master_t;
  30. struct nodelink_master
  31. {
  32. unsigned char bus_status; //总线状态,0xff为复位状态,会发送复位命令,0x00为初始化状态,会分配ID,0x01为工作状态
  33. unsigned char dev_count; //设备计数
  34. int count; //总线一些操作的计数
  35. int step;
  36. nodelink_device_t device[NODELINK_DEVICE_NUMBER + 1]; //设备缓存
  37. unsigned char data_in[NATIVE_DATA_BUFFER_SIZE]; //数据输入缓冲
  38. unsigned char data_out[NATIVE_DATA_BUFFER_SIZE]; //数据输出缓冲
  39. unsigned char code[16]; //16字节标识码
  40. void (*callback)(nodelink_master_t * , char , void *);
  41. };
  42. void nodelink_master_set_callback(nodelink_master_t * master,
  43. void(*)(nodelink_master_t * , char , void *));
  44. void nodelink_master_set_code(nodelink_master_t * master, unsigned char * code);
  45. void nodelink_master_init(nodelink_master_t * master);
  46. void nodelink_master_reset(nodelink_master_t *master);
  47. void nodelink_master_begin_scan(nodelink_master_t *master);
  48. void nodelink_master_recv(nodelink_master_t *master,
  49. unsigned char *src,
  50. int len);
  51. int nodelink_master_send(nodelink_master_t *master,
  52. unsigned char *dst);
  53. #endif