static enum rym_code _rym_bg( struct rym_ctx *ctx, rt_uint8_t *buf, rt_size_t len) { struct custom_ctx *cctx = (struct custom_ctx*)ctx; cctx->fpath[0] = '\0'; /* use current working directory */ getcwd(cctx->fpath, sizeof(cctx->fpath)); strcat(cctx->fpath, "/"); strcat(cctx->fpath, buf); cctx->fd = open(cctx->fpath, O_CREAT | O_WRONLY | O_TRUNC, 0); if (cctx->fd < 0) { rt_err_t err = rt_get_errno(); rt_kprintf("error creating file: %d\n", err); rt_kprintf("abort transmission\n"); return RYM_CODE_CAN; } cctx->flen = atoi(buf+strlen(buf)+1); if (cctx->flen == 0) cctx->flen = -1; return RYM_CODE_ACK; }
int main(void) { int timeout = 0; /* Filesystem Initialization */ #ifdef RT_USING_DFS { #if defined(RT_USING_DFS_ROMFS) if (dfs_mount(RT_NULL, "/rom", "rom", 0, &romfs_root) == 0) { rt_kprintf("ROM File System initialized!\n"); } else rt_kprintf("ROM File System initialzation failed!\n"); #endif #if defined(RT_USING_DFS_UFFS) { /* mount flash device as flash directory */ if(dfs_mount("nand0", "/nand0", "uffs", 0, 0) == 0) rt_kprintf("UFFS File System initialized!\n"); else rt_kprintf("UFFS File System initialzation failed!\n"); } #endif #ifdef RT_USING_SDIO timeout = 0; while ((rt_device_find("sd0") == RT_NULL) && (timeout++ < RT_TICK_PER_SECOND*2)) { rt_thread_delay(1); } if (timeout < RT_TICK_PER_SECOND*2) { /* mount sd card fat partition 1 as root directory */ if (dfs_mount("sd0", "/", "elm", 0, 0) == 0) { rt_kprintf("File System initialized!\n"); } else rt_kprintf("File System initialzation failed!%d\n", rt_get_errno()); } else { rt_kprintf("No SD card found.\n"); } #endif } #endif #ifdef RT_USING_LED rt_led_app_init(); #endif }
static void led_thread_entry(void *parameter) { rt_device_t led_dev; rt_device_t vbus_dev; rt_err_t err; rt_led_hw_init(); led_dev = rt_device_find("led"); if (led_dev == RT_NULL) { rt_kprintf("can not find the led device\n"); return; } vbus_dev = rt_device_find("vecho"); if (vbus_dev == RT_NULL) { rt_kprintf("can not find the vbus device\n"); return; } err = rt_device_open(vbus_dev, RT_DEVICE_OFLAG_RDWR); if (err != RT_EOK) { rt_kprintf("open vbus failed: %d\n", err); return; } while (1) { rt_uint8_t led_value; int len; len = rt_device_read(vbus_dev, 0, &led_value, sizeof(led_value)); if (len <= 0) { rt_kprintf("vbus read err: %d, %d\n", len, rt_get_errno()); } led_dev->write(led_dev, 1, &led_value, sizeof(led_value)); } }
static enum rym_code _rym_bg( struct rym_ctx *ctx, rt_uint8_t *buf, rt_size_t len) { struct custom_ctx *cctx = (struct custom_ctx*)ctx; cctx->fpath[0] = '/'; /* the buf should be the file name */ strcpy(&(cctx->fpath[1]), (const char*)buf); cctx->fd = open(cctx->fpath, O_CREAT | O_WRONLY | O_TRUNC, 0); if (cctx->fd < 0) { rt_err_t err = rt_get_errno(); rt_kprintf("error creating file: %d\n", err); rt_kprintf("abort transmission\n"); return RYM_CODE_CAN; } cctx->flen = atoi((const char*)buf+strlen((const char*)buf)+1); if (cctx->flen == 0) cctx->flen = -1; return RYM_CODE_ACK; }
void tcpecho_socket_entry(void *parameter) { char *recv_data; rt_uint32_t sin_size; int sock = -1, connected, bytes_received; struct sockaddr_in server_addr, client_addr; recv_data = rt_malloc(TCP_SOCKET_BUFFER_SIZE); if (recv_data == RT_NULL) { rt_kprintf("no memory\n"); goto _exit; } /* create a TCP socket */ if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { rt_kprintf("create socket error\n"); goto _exit; } /* initialize server address */ server_addr.sin_family = AF_INET; server_addr.sin_port = htons(TCP_SOCKET_ECHO_PORT); server_addr.sin_addr.s_addr = INADDR_ANY; rt_memset(&(server_addr.sin_zero),8, sizeof(server_addr.sin_zero)); /* bind to server address */ if (bind(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1) { rt_kprintf("bind address failed\n"); goto _exit; } /* listen */ if (listen(sock, 5) == -1) { rt_kprintf("listen error\n"); goto _exit; } sin_size = sizeof(struct sockaddr_in); while(1) { /* accept client connected */ connected = accept(sock, (struct sockaddr *)&client_addr, &sin_size); if (connected > 0) { int timeout; /* set timeout option */ timeout = 5000; /* 5second */ setsockopt(connected, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)); /* handle this client */ while (1) { /* receive data from this connection */ bytes_received = recv(connected,recv_data, TCP_SOCKET_BUFFER_SIZE, 0); if (bytes_received <= 0) { rt_kprintf("close client connection, errno: %d, socket error: %d\n", rt_get_errno(), lwip_get_error()); /* connection closed. */ lwip_close(connected); break; } /* send data to client */ send(connected, recv_data, bytes_received, 0); } } } _exit: /* close socket */ if (sock != -1) lwip_close(sock); rt_free(recv_data); return ; }
void rt_init_thread_entry(void* parameter) { platform_init(); /* Filesystem Initialization */ #ifdef RT_USING_DFS { /* init the device filesystem */ dfs_init(); #if defined(RT_USING_DFS_ELMFAT) /* init the elm chan FatFs filesystam*/ elm_init(); #endif #if defined(RT_USING_DFS_ROMFS) dfs_romfs_init(); if (dfs_mount(RT_NULL, "/rom", "rom", 0, &romfs_root) == 0) { rt_kprintf("ROM File System initialized!\n"); } else rt_kprintf("ROM File System initialzation failed!\n"); #endif #if defined(RT_USING_DFS_DEVFS) devfs_init(); if (dfs_mount(RT_NULL, "/dev", "devfs", 0, 0) == 0) rt_kprintf("Device File System initialized!\n"); else rt_kprintf("Device File System initialzation failed!\n"); #ifdef RT_USING_NEWLIB /* init libc */ libc_system_init(RT_CONSOLE_DEVICE_NAME); #endif #endif #if defined(RT_USING_DFS_UFFS) { /* init the uffs filesystem */ dfs_uffs_init(); /* mount flash device as flash directory */ if(dfs_mount("nand0", "/nand0", "uffs", 0, 0) == 0) rt_kprintf("UFFS File System initialized!\n"); else rt_kprintf("UFFS File System initialzation failed!\n"); } #endif #ifdef RT_USING_I2C { rt_i2c_core_init(); davinci_i2c_init("I2C1"); } #endif #ifdef RT_USING_SPI { rt_hw_spi_init(); } #endif #ifdef RT_USING_SDIO rt_mmcsd_core_init(); rt_mmcsd_blk_init(); rt_hw_mmcsd_init(); rt_thread_delay(RT_TICK_PER_SECOND*2); /* mount sd card fat partition 1 as root directory */ if (dfs_mount("sd0", "/", "elm", 0, 0) == 0) { rt_kprintf("File System initialized!\n"); } else rt_kprintf("File System initialzation failed!%d\n", rt_get_errno()); #endif } #endif #ifdef RT_USING_LWIP { /* register ethernetif device */ eth_system_device_init(); rt_hw_davinci_emac_init(); /* init lwip system */ lwip_system_init(); } #endif }
static void rt_test_485_entry(void* parameter) { rt_device_t dev_485_1; rt_device_t dev_485_2; rt_device_t dev_485_3; rt_size_t read_cnt; unsigned char tx_ch = 0; unsigned char rx_ch = 0; unsigned char rx_buf[4]; rt_sem_init(&uart485_1_rx_msg_sem, "u485-1", 0, RT_IPC_FLAG_PRIO); rt_sem_init(&uart485_2_rx_msg_sem, "u485-2", 0, RT_IPC_FLAG_PRIO); rt_sem_init(&uart485_3_rx_msg_sem, "u485-3", 0, RT_IPC_FLAG_PRIO); #if !EM_ALL_TYPE_BASE uart485_mb = rt_mb_create("485_mb", 1, RT_IPC_FLAG_FIFO); if (RT_NULL == uart485_mb) { printf_syn("func:%s(), line:%d malloc fail\n",__FUNCTION__, __LINE__); return; } #endif dev_485_1 = rt_device_find(UART_485_1_DEV); if (dev_485_1 != RT_NULL && rt_device_open(dev_485_1, RT_DEVICE_OFLAG_RDWR) == RT_EOK) { printf_syn("rt_test_485_entry open device:%s succ\n", UART_485_1_DEV); rt_device_set_rx_indicate(dev_485_1, uart485_1_rx_ind); } else { printf_syn("rt_test_485_entry can not find device:%s\n", UART_485_1_DEV); return; } dev_485_2 = rt_device_find(UART_485_2_DEV); if (dev_485_2 != RT_NULL && rt_device_open(dev_485_2, RT_DEVICE_OFLAG_RDWR) == RT_EOK) { printf_syn("rt_test_485_entry open device:%s succ\n", UART_485_2_DEV); rt_device_set_rx_indicate(dev_485_2, uart485_2_rx_ind); } else { printf_syn("rt_test_485_entry can not find device:%s\n", UART_485_2_DEV); return; } dev_485_3 = rt_device_find(UART_485_3_DEV); if (dev_485_3 != RT_NULL && rt_device_open(dev_485_3, RT_DEVICE_OFLAG_RDWR) == RT_EOK) { printf_syn("rt_test_485_entry open device:%s succ\n", UART_485_3_DEV); rt_device_set_rx_indicate(dev_485_3, uart485_3_rx_ind); } else { printf_syn("rt_test_485_entry can not find device:%s\n", UART_485_3_DEV); return; } while (1) { #if 0 tx_en_rev_disable_485_1(); #else #if 0 int rx_cnt, err_cnt; rt_err_t err; int i; rx_cnt = 0; err_cnt = 0; printf_syn("send cmd: "); for (i=0; i<sizeof(cmd_485_seq); ++i) printf_syn("%02x ", cmd_485_seq[i]); printf_syn("\n"); //rt_enter_critical(); tx_en_rev_disable_485_2(); //rt_thread_delay(2); dev_485_2->write(dev_485_2, 0, cmd_485_seq, sizeof(cmd_485_seq)); //rt_thread_delay(1); wait_usartx_send_over(USART3); tx_disable_rev_en_485_2(); //rt_exit_critical(); printf_syn("485-2 485 cmd had send over\n"); while (rx_cnt<23 && err_cnt<2) { if (RT_EOK == (err=rt_sem_take(&uart485_2_rx_msg_sem, WAIT_RX_MSG_TIMEOUT))) { while (1 == dev_485_2->read(dev_485_2, 0, &rx_ch, 1)) { ++rx_cnt; printf_syn("485-2 recv ind[%3d]:0x%2x\n", rx_cnt, rx_ch); } } else { printf_syn("485-2 recv error(%d)\n", err); ++err_cnt; } } rt_thread_delay(get_ticks_of_ms(5 * 1000)); #else tx_en_rev_disable_485_1(); rt_thread_delay(2); printf_syn("485-1 send:%d\n", tx_ch); dev_485_1->write(dev_485_1, 0, &tx_ch, 1); rt_thread_delay(2); tx_disable_rev_en_485_1(); #if 0 #if 0 if (RT_EOK == rt_sem_take(&uart485_3_rx_msg_sem, WAIT_RX_MSG_TIMEOUT)) { read_cnt = dev_485_3->read(dev_485_3, 0, rx_buf, sizeof(rx_buf)); if (read_cnt != 0) { rx_ch = rx_buf[read_cnt - 1]; } else { rx_ch = 0; printf_syn("485-3 recv error(%d)\n", rt_get_errno()); } printf_syn("485-3 recv:%d, read_cnt:%d\n", rx_ch, read_cnt); rt_thread_delay(5); tx_en_rev_disable_485_3(); rt_thread_delay(2); printf_syn("485-3 send:%d\n", rx_ch); dev_485_3->write(dev_485_3, 0, &rx_ch, 1); rt_thread_delay(2); tx_disable_rev_en_485_3(); } else { printf_syn("485-3 recv error\n"); } #else if (RT_EOK == rt_sem_take(&uart485_2_rx_msg_sem, WAIT_RX_MSG_TIMEOUT)) { read_cnt = dev_485_2->read(dev_485_2, 0, rx_buf, sizeof(rx_buf)); if (read_cnt != 0) { rx_ch = rx_buf[read_cnt - 1]; } else { rx_ch = 0; printf_syn("485-2 recv error(%d)\n", rt_get_errno()); } printf_syn("485-2 recv:%d, read_cnt:%d\n", rx_ch, read_cnt); rt_thread_delay(5); tx_en_rev_disable_485_2(); rt_thread_delay(2); printf_syn("485-2 send:%d\n", rx_ch); dev_485_2->write(dev_485_2, 0, &rx_ch, 1); rt_thread_delay(2); tx_disable_rev_en_485_2(); } else { printf_syn("485-2 recv error\n"); } #endif #else if (tx_ch & 0x01) { if (RT_EOK == rt_sem_take(&uart485_3_rx_msg_sem, WAIT_RX_MSG_TIMEOUT)) { read_cnt = dev_485_3->read(dev_485_3, 0, rx_buf, sizeof(rx_buf)); if (read_cnt != 0) { rx_ch = rx_buf[read_cnt - 1]; } else { rx_ch = 0; printf_syn("485-3 recv error(%d)\n", rt_get_errno()); } printf_syn("485-3 recv:%d, read_cnt:%d\n", rx_ch, read_cnt); rt_thread_delay(5); tx_en_rev_disable_485_3(); rt_thread_delay(2); printf_syn("485-3 send:%d\n", rx_ch); dev_485_3->write(dev_485_3, 0, &rx_ch, 1); rt_thread_delay(2); tx_disable_rev_en_485_3(); } else { printf_syn("485-3 recv error\n"); } } else { if (RT_EOK == rt_sem_take(&uart485_2_rx_msg_sem, WAIT_RX_MSG_TIMEOUT)) { read_cnt = dev_485_2->read(dev_485_2, 0, rx_buf, sizeof(rx_buf)); if (read_cnt != 0) { rx_ch = rx_buf[read_cnt - 1]; } else { rx_ch = 0; printf_syn("485-2 recv error(%d)\n", rt_get_errno()); } printf_syn("485-2 recv:%d, read_cnt:%d\n", rx_ch, read_cnt); rt_thread_delay(5); tx_en_rev_disable_485_2(); rt_thread_delay(2); printf_syn("485-2 send:%d\n", rx_ch); dev_485_2->write(dev_485_2, 0, &rx_ch, 1); rt_thread_delay(2); tx_disable_rev_en_485_2(); } else { printf_syn("485-2 recv error\n"); } } #endif if (RT_EOK == rt_sem_take(&uart485_1_rx_msg_sem, WAIT_RX_MSG_TIMEOUT)) { dev_485_1->read(dev_485_1, 0, &rx_ch, 1); printf_syn("485-1 recv echo:%d\n\n", rx_ch); } else { printf_syn("485-1 recv echo error\n\n"); } rt_thread_delay(get_ticks_of_ms(1*1000)); ++tx_ch; #endif #endif } /* while(1) */ return; }