| 
									
										
										
										
											2023-06-10 11:52:00 +08:00
										 |  |  | #ifndef transmit_h__
 | 
					
						
							|  |  |  | #define transmit_h__
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "rtthread.h"
 | 
					
						
							|  |  |  | #include "handle.h"
 | 
					
						
							|  |  |  | #include "signal.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-28 18:08:38 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // 错误码定义
 | 
					
						
							|  |  |  | #define TRAN_ERR_NONE     0x00
 | 
					
						
							|  |  |  | #define TRAN_ERR_BUSY     0x01
 | 
					
						
							|  |  |  | #define TRAN_ERR_PARAM    0x02
 | 
					
						
							|  |  |  | #define TRAN_ERR_STEP     0x03
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-10 11:52:00 +08:00
										 |  |  | struct _tran_def; | 
					
						
							|  |  |  | typedef struct _tran_def tran_def; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct _ucport_def{ | 
					
						
							|  |  |  |   uint8_t cmd; | 
					
						
							|  |  |  |   tran_def *p; | 
					
						
							|  |  |  |   int (*dolater)(struct _ucport_def *u,uint8_t cmd,array_def *data,char *err_str); | 
					
						
							|  |  |  |   void (*del)(struct _ucport_def *h); | 
					
						
							|  |  |  |   void (*doend)(struct _ucport_def *h,port_mcu *src,void *data,int ack,char *err_str); | 
					
						
							|  |  |  | }ucport_def; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct{ | 
					
						
							|  |  |  |   ucport_def *(*creat)(tran_def *t,uint8_t cmd,array_def *data); | 
					
						
							|  |  |  |   uint8_t cmd; | 
					
						
							|  |  |  |   const char *codec_name; | 
					
						
							|  |  |  | }ucport_item; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define transmit_export(codec_name_,cmd_,fun_) \
 | 
					
						
							|  |  |  |   const static char __tran_##codec_name_##cmd_##_name[] SECTION(".rodata.transtr") = #codec_name_; \ | 
					
						
							|  |  |  |   RT_USED static ucport_item _tran_##cmd_ SECTION("transtruct")= \ | 
					
						
							|  |  |  |   {\ | 
					
						
							|  |  |  |     .cmd=cmd_,\ | 
					
						
							|  |  |  |     .creat=fun_,\ | 
					
						
							|  |  |  |     .codec_name=__tran_##codec_name_##cmd_##_name,\ | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | tran_def *tran_creat(sig_thread t); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void tran_recv_slot(tran_def *t,const char *codec_name,uint8_t cmd,array_def *data,char *err_str); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void tran_set_busy(tran_def *t,int busy); | 
					
						
							|  |  |  | int tran_get_busy(tran_def *t); | 
					
						
							|  |  |  | port_mcu *tran_get_portm(tran_def *t,int index); | 
					
						
							|  |  |  | uint32_t tran_get_slave_online(tran_def *t); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | signal tran_reply_signal(tran_def *p,array_def *data); | 
					
						
							|  |  |  | signal tran_send_signal(tran_def *p,uint8_t cmd,array_def *data); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 |