TFTP test updated

master
maxxir_w 7 years ago
parent 43abda9187
commit b6a2727727

@ -26,23 +26,18 @@ void save_data(uint8_t *data, uint32_t data_len, uint16_t block_number)
//Nothing to do with received data yet.. //Nothing to do with received data yet..
//TODO: Add your own handler here //TODO: Add your own handler here
//Print out data as string //Print out data as string
/*
uint8_t _tmp_msg[256] = "\0";
memset(_tmp_msg, 0x0, 256);
strncpy(_tmp_msg, data, data_len);
*/
uint8_t * str; uint8_t * str;
str = data; str = data;
str += data_len; str += data_len;
*str = 0x0; *str = 0x0;
PRINTF("++Data #%d-%lu:\r\n%s\r\n", block_number, data_len, data); PRINTF("\r\n++Data #%d-%lu:\r\n%s\r\n", block_number, data_len, data);
} }
#endif #endif
/* Global Variable ----------------------------------------------*/ /* Global Variable ----------------------------------------------*/
static int g_tftp_socket = -1; static int g_tftp_socket = -1;
static uint8_t g_filename[FILE_NAME_SIZE]; static uint8_t g_filename[TFTP_FILE_NAME_SIZE];
static uint32_t g_server_ip = 0; static uint32_t g_server_ip = 0;
static uint16_t g_server_port = 0; static uint16_t g_server_port = 0;
@ -66,7 +61,7 @@ static TFTP_OPTION default_tftp_opt = {
uint8_t g_progress_state = TFTP_PROGRESS; uint8_t g_progress_state = TFTP_PROGRESS;
#ifdef __TFTP_DEBUG__ #ifdef __TFTP_DEBUG__
int dbg_level = (INFO_DBG | ERROR_DBG | IPC_DBG); int dbg_level = (INFO_DBG | ERROR_DBG | IPC_DBG | DEBUG_DBG);
#endif #endif
/* static function define ---------------------------------------*/ /* static function define ---------------------------------------*/
@ -145,9 +140,9 @@ static int open_tftp_socket(uint8_t sock)
{ {
uint8_t sd, sck_state; uint8_t sd, sck_state;
sd = socket(sock, Sn_MR_UDP, 51000, SF_IO_NONBLOCK); sd = socket(sock, Sn_MR_UDP, TFTP_LOCAL_PORT, SF_IO_NONBLOCK);
if(sd != sock) { if(sd != sock) {
//DBG_PRINT(ERROR_DBG, "[%s] socket error\r\n", __func__); DBG_PRINT(ERROR_DBG, "[%s] socket error\r\n", __func__);
return -1; return -1;
} }
@ -155,7 +150,7 @@ static int open_tftp_socket(uint8_t sock)
getsockopt(sd , SO_STATUS, &sck_state); getsockopt(sd , SO_STATUS, &sck_state);
} while(sck_state != SOCK_UDP); } while(sck_state != SOCK_UDP);
return sd; return (int)sd;
} }
static int send_udp_packet(int socket, uint8_t *packet, uint32_t len, uint32_t ip, uint16_t port) static int send_udp_packet(int socket, uint8_t *packet, uint32_t len, uint32_t ip, uint16_t port)
@ -593,8 +588,21 @@ void TFTP_init(uint8_t socket, uint8_t *buf)
{ {
init_tftp(); init_tftp();
g_tftp_socket = open_tftp_socket(socket);
g_tftp_rcv_buf = buf; g_tftp_rcv_buf = buf;
g_tftp_socket = open_tftp_socket(socket);
if(g_tftp_socket == -1)
{
//Here when TFTP socket open OK
DBG_PRINT(ERROR_DBG, "--[%s] TFTP socket[%d] open error\r\nReboot the board..\r\n", __func__, socket);
while(1)
{
;
}
}
else
{
DBG_PRINT(INFO_DBG, "++[%s] TFTP socket[%d]:%u open success\r\n", __func__, g_tftp_socket, TFTP_LOCAL_PORT);
}
} }
void TFTP_exit(void) void TFTP_exit(void)
@ -663,7 +671,7 @@ void TFTP_read_request(uint32_t server_ip, uint8_t *filename)
{ {
set_server_ip(server_ip); set_server_ip(server_ip);
#ifdef __TFTP_DEBUG__ #ifdef __TFTP_DEBUG__
DBG_PRINT(INFO_DBG, "[%s] Set Tftp Server : 0x%lx\r\n", __func__, server_ip); DBG_PRINT(INFO_DBG, "[%s] Set Tftp Server : 0x%lX\r\n", __func__, server_ip);
#endif #endif
g_progress_state = TFTP_PROGRESS; g_progress_state = TFTP_PROGRESS;

@ -36,7 +36,7 @@ FRESULT fr; // FatFs function common result code
#define DBG_PRINT(level, format, args...) { \ #define DBG_PRINT(level, format, args...) { \
if(dbg_level & level) \ if(dbg_level & level) \
printf(format, ##args); \ PRINTF(format, ##args); \
} }
#define NORMAL_MODE 0 #define NORMAL_MODE 0
@ -71,10 +71,10 @@ extern int dbg_level;
/* define */ /* define */
#define TFTP_SERVER_PORT 69 #define TFTP_SERVER_PORT 69
#define TFTP_TEMP_PORT 51000 #define TFTP_LOCAL_PORT 51000
#define TFTP_BLK_SIZE 512 #define TFTP_BLK_SIZE 512
#define MAX_MTU_SIZE 1514 #define MAX_MTU_SIZE 1514
#define FILE_NAME_SIZE 20 #define TFTP_FILE_NAME_SIZE 20
//#define __TFTP_DEBUG__ //#define __TFTP_DEBUG__

@ -218,7 +218,7 @@ uint16_t adc_read(uint8_t channel)
//***************** TFTP client INIT: BEGIN //***************** TFTP client INIT: BEGIN
uint8_t g_tftp_socket_rcv_buf[MAX_MTU_SIZE]; uint8_t g_tftp_socket_rcv_buf[MAX_MTU_SIZE];
uint8_t g_tftp_op_mode = NORMAL_MODE; uint8_t g_tftp_op_mode = NORMAL_MODE;
uint8_t tftp_filename[50]; uint8_t tftp_filename[TFTP_FILE_NAME_SIZE];
uint32_t tftp_server; uint32_t tftp_server;
//***************** TFTP client INIT: END //***************** TFTP client INIT: END
@ -564,11 +564,10 @@ int main()
printf("\r\n########## SW1 was pressed.\r\n"); printf("\r\n########## SW1 was pressed.\r\n");
//strncpy(tftp_filename, 0x00, 50); memset(tftp_filename, 0x0, 20);
memset(tftp_filename, 0x0, 50); //strncpy(tftp_filename, "test.txt", TFTP_FILE_NAME_SIZE);
//strncpy(tftp_filename, "test.txt", 8); strncpy(tftp_filename, "README.md", TFTP_FILE_NAME_SIZE);
//strncpy(tftp_filename, "README.md", 9); //strncpy(tftp_filename, "tftpd32.ini", TFTP_FILE_NAME_SIZE);
strncpy(tftp_filename, "tftpd32.ini", 11);
tftp_server = ((uint32_t)tftp_destip[0] << 24) | ((uint32_t)tftp_destip[1] << 16) | ((uint32_t)tftp_destip[2] << 8) | ((uint32_t)tftp_destip[3]); tftp_server = ((uint32_t)tftp_destip[0] << 24) | ((uint32_t)tftp_destip[1] << 16) | ((uint32_t)tftp_destip[2] << 8) | ((uint32_t)tftp_destip[3]);
@ -587,12 +586,11 @@ int main()
_ret = TFTP_run(); _ret = TFTP_run();
if(_ret != TFTP_PROGRESS) if(_ret != TFTP_PROGRESS)
break; break;
_delay_ms(1);//Just for debug //_delay_ms(1);//Just for debug
} }
_delay_ms(1000);//Just for debug _delay_ms(1000);
//!! Debug only //!! Debug only
//PRINTF("SW1 is pressed\r\nADC0/PA0 is: %u\r\n", adc_read(0));
//PRINTF("SW1 is pressed\r\n"); //PRINTF("SW1 is pressed\r\n");