Hi, As a continuation to my earlier mail...
Where do you call tcpServer_send ?? In tcpecho_raw_init function you call function tcp_new_ip_type I am not familier with this function ? My init function looks like this: struct tcp_pcb *Listening_pcb; // is define static global void TcpTermInit(u16 TcpTermPort) { struct tcp_pcb *pcb; err_t err; pcb = tcp_new(); if(pcb != NULL) { // bind local IP with our port err = tcp_bind(pcb, IP_ADDR_ANY, TcpTermPort); if(err == ERR_OK) { // The tcp_listen() function returns a new connection control block, and // the one passed as an argument to the function will be deallocated. The // reason for this behavior is that less memory is needed for a connection // that is listening, so tcp_listen() will reclaim the memory needed for // the original connection and allocate a new smaller memory block for the // listening connection. Listening_pcb = tcp_listen(pcb); // if we are here that mean that we did not use all available connection // and we are ready to treat another one. tcp_setprio(Listening_pcb, TCP_PRIO_MIN); tcp_accept(Listening_pcb, tcp_term_accept); } else { /* abort? output diagnostic? */ } } else { /* abort? output diagnostic? */ } } BR, Noam. From: lwip-users [mailto:lwip-users-bounces+noam=silrd....@nongnu.org] On Behalf Of Julio Cesar Aguilar Zerpa Sent: Monday, October 31, 2016 11:00 AM To: Mailing list for lwIP users Subject: Re: [lwip-users] Tcp Server on Texas Instrument RM57 Hi Noam, Thank you for helping me. 1. First of all are you running with an OS or without? I am using the RM57 Microprocessor -> without OS 2. Secondly do you understand that with RAW API you should not call any LwIP if the call is not from within the LwIP own context? That is a very important point that I didn't know about! So, then how should I send data? How do I initialize the pbuf pointer? 3. As far as I see you are not copying the data into the new buffer. How is the send itself? does the function tcpecho_raw_send copying the data to the buffer? Yes, you are right. I noticed that. I then tried it with "TEST_DATA" as global. Same problem (but at least the data was correct at tcpecho_raw_send) 4. The code is just partial so I cannot see the picture You can see the code if you have the examples. It's the 'tcpecho_raw'. I will attach it just in case you don't have it. I made some minor modifications to check if there's a connection and also added the function already described. (Again: the 'echo' part works -> received data is being sent back correctly, but sending data that wasn't received is not working) 5. Secondly check if tcp_write uses the copy mode into an internal buffer or use a reference to data. Yes, it uses the copy mode. I also tried to send the data using the 'tcp_write' function directly instead of calling tcpecho_raw_send and it returned error -11 (no connection) but was receiving and sending data over the callbacks. It appears your second statement is one of the reason my program is not working. I don't have any current docu, do you have any? How do I send data? Is there another example that receives data over callbacks and is able to send data created on its own memory space? Best regards, Julio Am 29.10.2016 um 02:04 schrieb Noam Weissman: Hi, First of all are you running with an OS or without ? Secondly do you understand that with RAW API you should not call any LwIP if the call is not from within the LwIP own context ? As far as I see you are not copying the data into the new buffer. How is the send itself ? does the function tcpecho_raw_send copying the data to the buffer ? RAW API means that everything you do is in the same context. If you block on the function tcpecho_raw_send and/or do something that takes too much time yes the data will not properly handled. The code is just partial so I cannot see the picture. I would start with setting your uint8 data[] = "TEST_DATA"; to static OUTSIDE of the function. This way it will not change when you exit from the function. Secondly check if tcp_write uses the copy mode into an internal buffer or use a reference to data. BR, Noam. ________________________________ From: lwip-users <lwip-users-bounces+noam=silrd....@nongnu.org><mailto:lwip-users-bounces+noam=silrd....@nongnu.org> on behalf of Julio Cesar Aguilar Zerpa <agui...@goetting.de><mailto:agui...@goetting.de> Sent: Friday, October 28, 2016 4:56 PM To: lwip-users@nongnu.org<mailto:lwip-users@nongnu.org> Subject: [lwip-users] Tcp Server on Texas Instrument RM57 Hi there, I am trying to use the LwIP library (1.4.1) to create a simple tcp server on a Texas Instrument RM57. So far, I could make the "tcpecho_raw" example to work using an static ip. I also added the following function (which did not work), to be able to send data that wasn't an echo: void tcpServer_send() { uint8 data[] = "TEST_DATA"; struct pbuf* buffer = pbuf_alloc(PBUF_RAW, sizeof(data), PBUF_POOL); if (buffer) { sciDisplayText(sciREG1, txt_new_line, sizeof(txt_new_line)); sciDisplayText(sciREG1, "buffer created", sizeof("buffer created")); buffer->tot_len = sizeof(data); buffer->len = sizeof(data); buffer->payload = data; tcpecho_es->p = buffer; tcpecho_raw_send(tcpecho_raw_pcb, tcpecho_es); } } As you can see, the function prints a debug msg ("buffer created"). I modified the function 'tcpecho_raw_send' to also print a debug msg (the data being sent). When I run the program, I can see the msg "buffer created" every time the function is called, but the msg from 'tcpecho_raw_send' comes only when I close the client! (And the msg is missing the acutal data, btw). NOTE: I want to build a server that receives some commands and sends a block of data (4KB) every 60 ms. I am using the raw API because I don't want to use blocking functions (from what I understood the netconn API uses blocking functions). I would appreciate any help. Best regards, Julio Aguilar _______________________________________________ lwip-users mailing list lwip-users@nongnu.org<mailto:lwip-users@nongnu.org> https://lists.nongnu.org/mailman/listinfo/lwip-users lwip-users -- Mailing list for lwIP users - lists.nongnu.org<https://lists.nongnu.org/mailman/listinfo/lwip-users> lists.nongnu.org Welcome to the lwip-users mailing list. Use it to ask questions, share your experience and discuss new ideas. To see the collection of prior postings to the list ... _______________________________________________ lwip-users mailing list lwip-users@nongnu.org<mailto:lwip-users@nongnu.org> https://lists.nongnu.org/mailman/listinfo/lwip-users Mit freundlichen Grüßen Götting KG i.A. Julio Cesar Aguilar Zerpa -- M.Sc. Julio Cesar Aguilar Zerpa Forschung & Entwicklung agui...@goetting.de<mailto:agui...@goetting.de> Tel. +49(0)-5136-8096-39 -------------------- Götting KG Celler Str. 5, D-31275 Lehrte/Röddensen Geschäftsführer H.-H. Götting HR A 31127 | Amtsgericht Hildesheim Gerichtsstand Lehrte USt.-Id. Nr. DE 115055039 USt.-Nr. 16-226-13403 Phone +49(0)-5136-8096-0 Fax +49(0)-5136-8096-80 i...@goetting.de<mailto:i...@goetting.de> | www.goetting.de<http://www.goetting.de> --------------------
_______________________________________________ lwip-users mailing list lwip-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/lwip-users