forked from xuos/xiuos
				
			xiuos\APP_Framework\Framework\connection\lora\e220:
1.Add Kconfig files and SConscript files related to e220
This commit is contained in:
		
							parent
							
								
									bf9b87a314
								
							
						
					
					
						commit
						fe21a461a5
					
				| 
						 | 
					@ -39,11 +39,11 @@ if ADD_NUTTX_FETURES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        config ADAPTER_E220_M0_PATH
 | 
					        config ADAPTER_E220_M0_PATH
 | 
				
			||||||
                string "E220 M0 pin device"
 | 
					                string "E220 M0 pin device"
 | 
				
			||||||
                default "/dev/gpout0"
 | 
					                default "/dev/gpio0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        config ADAPTER_E220_M1_PATH
 | 
					        config ADAPTER_E220_M1_PATH
 | 
				
			||||||
                string "E220 M1 pin device"
 | 
					                string "E220 M1 pin device"
 | 
				
			||||||
                default "/dev/gpout1"
 | 
					                default "/dev/gpio1"
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        config ADAPTER_E220_DRIVER_EXTUART
 | 
					        config ADAPTER_E220_DRIVER_EXTUART
 | 
				
			||||||
                bool "Using extra uart to support lora"
 | 
					                bool "Using extra uart to support lora"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,12 @@
 | 
				
			||||||
#include <adapter.h>
 | 
					#include <adapter.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define E220_GATEWAY_ADDRESS 0xFFFF
 | 
					#define E220_GATEWAY_ADDRESS 0xFFFF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ADD_RTTHREAD_FETURES
 | 
				
			||||||
 | 
					#define E220_CHANNEL 0x02
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
#define E220_CHANNEL 0x05
 | 
					#define E220_CHANNEL 0x05
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef AS_LORA_GATEWAY_ROLE
 | 
					#ifdef AS_LORA_GATEWAY_ROLE
 | 
				
			||||||
#define E220_ADDRESS E220_GATEWAY_ADDRESS
 | 
					#define E220_ADDRESS E220_GATEWAY_ADDRESS
 | 
				
			||||||
| 
						 | 
					@ -31,7 +36,11 @@
 | 
				
			||||||
#define E220_ADDRESS ADAPTER_LORA_NET_ROLE_ID
 | 
					#define E220_ADDRESS ADAPTER_LORA_NET_ROLE_ID
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ADD_RTTHREAD_FETURES
 | 
				
			||||||
 | 
					#define E220_UART_BAUD_RATE 9600
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
#define E220_UART_BAUD_RATE 115200
 | 
					#define E220_UART_BAUD_RATE 115200
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum E220LoraMode
 | 
					enum E220LoraMode
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -265,13 +274,16 @@ static int E220SetRegisterParam(struct Adapter *adapter, uint16 address, uint8 c
 | 
				
			||||||
    buffer[10] = 0;                      //low-cipher
 | 
					    buffer[10] = 0;                      //low-cipher
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ret = PrivWrite(adapter->fd, (void *)buffer, 11);
 | 
					    ret = PrivWrite(adapter->fd, (void *)buffer, 11);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
    if(ret < 0){
 | 
					    if(ret < 0){
 | 
				
			||||||
        printf("E220SetRegisterParam send failed %d!\n", ret);
 | 
					        printf("E220SetRegisterParam send failed %d!\n", ret);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PrivRead(adapter->fd, buffer, 11);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    PrivRead(adapter->fd, buffer, 11);
 | 
				
			||||||
		E220LoraModeConfig(DATA_TRANSFER_MODE);
 | 
							E220LoraModeConfig(DATA_TRANSFER_MODE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    PrivTaskDelay(1000);
 | 
					    PrivTaskDelay(1000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
| 
						 | 
					@ -337,6 +349,61 @@ static int E220Open(struct Adapter *adapter)
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
 | 
					#ifdef ADD_RTTHREAD_FETURES
 | 
				
			||||||
 | 
					static int E220Open(struct Adapter *adapter)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					     /*step1: open e220 uart port*/
 | 
				
			||||||
 | 
					    adapter->fd = PrivOpen(ADAPTER_E220_DRIVER, O_RDWR);
 | 
				
			||||||
 | 
					    if (adapter->fd < 0) {
 | 
				
			||||||
 | 
					        printf("E220Open get uart %s fd error\n", ADAPTER_E220_DRIVER);
 | 
				
			||||||
 | 
					        return -1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    struct SerialDataCfg cfg;
 | 
				
			||||||
 | 
					    memset(&cfg, 0 ,sizeof(struct SerialDataCfg));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cfg.serial_baud_rate = BAUD_RATE_9600;
 | 
				
			||||||
 | 
					    cfg.serial_data_bits = DATA_BITS_8;
 | 
				
			||||||
 | 
					    cfg.serial_stop_bits = STOP_BITS_1;
 | 
				
			||||||
 | 
					    cfg.serial_parity_mode = PARITY_NONE;
 | 
				
			||||||
 | 
					    cfg.serial_bit_order = BIT_ORDER_LSB;
 | 
				
			||||||
 | 
					    cfg.serial_invert_mode = NRZ_NORMAL;
 | 
				
			||||||
 | 
					    cfg.serial_buffer_size = SERIAL_RB_BUFSZ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /*aiit board use ch438, so it needs more serial configuration*/
 | 
				
			||||||
 | 
					#ifdef ADAPTER_E220_DRIVER_EXTUART
 | 
				
			||||||
 | 
					    cfg.ext_uart_no         = ADAPTER_E220_DRIVER_EXT_PORT;
 | 
				
			||||||
 | 
					    cfg.port_configure      = PORT_CFG_INIT;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef AS_LORA_GATEWAY_ROLE
 | 
				
			||||||
 | 
					    //serial receive timeout 10s
 | 
				
			||||||
 | 
					    cfg.serial_timeout = 10000;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef AS_LORA_CLIENT_ROLE
 | 
				
			||||||
 | 
					    //serial receive wait forever
 | 
				
			||||||
 | 
					    cfg.serial_timeout = -1;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    struct PrivIoctlCfg ioctl_cfg;
 | 
				
			||||||
 | 
					    ioctl_cfg.ioctl_driver_type = SERIAL_TYPE;
 | 
				
			||||||
 | 
					    ioctl_cfg.args = &cfg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    PrivIoctl(adapter->fd, OPE_INT, &ioctl_cfg);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cfg.serial_baud_rate = E220_UART_BAUD_RATE;
 | 
				
			||||||
 | 
					    ioctl_cfg.args = &cfg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    PrivIoctl(adapter->fd, OPE_INT, &ioctl_cfg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ADAPTER_DEBUG("E220Open done\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
static int E220Open(struct Adapter *adapter)
 | 
					static int E220Open(struct Adapter *adapter)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /*step1: open e220 uart port*/
 | 
					    /*step1: open e220 uart port*/
 | 
				
			||||||
| 
						 | 
					@ -391,6 +458,7 @@ static int E220Open(struct Adapter *adapter)
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @description: Close E220 uart function
 | 
					 * @description: Close E220 uart function
 | 
				
			||||||
| 
						 | 
					@ -472,7 +540,7 @@ static int E220Send(struct Adapter *adapter, const void *buf, size_t len)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static int E220Recv(struct Adapter *adapter, void *buf, size_t len)
 | 
					static int E220Recv(struct Adapter *adapter, void *buf, size_t len)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int recv_len, recv_len_continue;
 | 
					    int recv_len=0, recv_len_continue=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    uint8 *recv_buf = PrivMalloc(len);
 | 
					    uint8 *recv_buf = PrivMalloc(len);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -558,7 +626,46 @@ static void LoraOpen(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    E220Open(adapter);
 | 
					    E220Open(adapter);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					MSH_CMD_EXPORT(LoraOpen,Lora open test sample);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ADD_RTTHREAD_FETURES
 | 
				
			||||||
 | 
					static void LoraRead(void *parameter)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int RevLen;
 | 
				
			||||||
 | 
						int i, cnt = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    uint8 buffer[256];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    memset(buffer, 0, 256);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    struct Adapter *adapter = AdapterDeviceFindByName(ADAPTER_LORA_NAME);
 | 
				
			||||||
 | 
					    if (NULL == adapter) {
 | 
				
			||||||
 | 
					        printf("LoraRead find lora adapter error\n");
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					    while (1)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        printf("ready to read lora data\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        RevLen = E220Recv(adapter, buffer, 6);
 | 
				
			||||||
 | 
							if (RevLen) {
 | 
				
			||||||
 | 
					            printf("lora get data %u\n", RevLen);
 | 
				
			||||||
 | 
					            for (i = 0; i < RevLen; i ++) {
 | 
				
			||||||
 | 
					                printf("i %u data 0x%x\n", i, buffer[i]);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            memset(buffer, 0, 256);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            PrivTaskDelay(1000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								cnt ++;
 | 
				
			||||||
 | 
					            E220Send(adapter, &cnt, 1);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					MSH_CMD_EXPORT(LoraRead,Lora read test sample);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
static void LoraRead(void *parameter)
 | 
					static void LoraRead(void *parameter)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int RevLen;
 | 
						int RevLen;
 | 
				
			||||||
| 
						 | 
					@ -594,6 +701,8 @@ static void LoraRead(void *parameter)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef ADD_XIZI_FETURES
 | 
					#ifdef ADD_XIZI_FETURES
 | 
				
			||||||
static void LoraTest(void)
 | 
					static void LoraTest(void)
 | 
				
			||||||
| 
						 | 
					@ -667,3 +776,41 @@ void E220LoraSend(int argc, char *argv[])
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ADD_RTTHREAD_FETURES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void LoraReadStart(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    LoraOpen();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rt_thread_t tid= rt_thread_create("LoraReadStart", LoraRead, RT_NULL,2048,10,5); 
 | 
				
			||||||
 | 
						if(tid!=RT_NULL){
 | 
				
			||||||
 | 
							rt_thread_startup(tid);
 | 
				
			||||||
 | 
						}else{
 | 
				
			||||||
 | 
							rt_kprintf("LoraReadStart task_lora_read failed \r\n");
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					MSH_CMD_EXPORT(LoraReadStart,Lora read task start sample);
 | 
				
			||||||
 | 
					#define E22400T_M1_PIN (11U)
 | 
				
			||||||
 | 
					#define E22400T_M0_PIN (9U)
 | 
				
			||||||
 | 
					static void LoraSend(int argc, char *argv[])
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						  int8_t cmd[10]={0xFF,0xFF,0x02,0xAA,0XBB,0xCC};   //sned AA BB CC to address 01 channel05
 | 
				
			||||||
 | 
							LoraOpen();
 | 
				
			||||||
 | 
					    struct Adapter *adapter = AdapterDeviceFindByName(ADAPTER_LORA_NAME);
 | 
				
			||||||
 | 
					    if (NULL == adapter) {
 | 
				
			||||||
 | 
					        printf("LoraRead find lora adapter error\n");
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
							rt_pin_mode (E22400T_M1_PIN, PIN_MODE_OUTPUT);
 | 
				
			||||||
 | 
						  rt_pin_mode (E22400T_M0_PIN, PIN_MODE_OUTPUT);
 | 
				
			||||||
 | 
					    rt_pin_write(E22400T_M1_PIN, PIN_LOW);
 | 
				
			||||||
 | 
						  rt_pin_write(E22400T_M0_PIN, PIN_HIGH);
 | 
				
			||||||
 | 
					    E220Send(adapter, cmd, 6);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					MSH_CMD_EXPORT(LoraSend,Lora send sample);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		Loading…
	
		Reference in New Issue