Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
10 years ago.
Buffer::pointer()?
Hello Roy,
I'm trying out your TCP client example, but it seems the method Buffer::pointer() is non-existant according to the compiler and checking the source files for Buffer.
The mbed compiler error: Error: Class "network::Buffer" has no member "pointer" in "main.cpp", Line: 38, Col: 71
Your example program tries to call it from line 40:
line from example program TCP Client
printf("Received %d bytes:\n\r%s\n\r", result, (char *)buffer.pointer());
Am I missing something or did something break in your library?
Greetings, Tim
Question relating to:
1 Answer
10 years ago.
Hi Tim,
The be honest it has been a while since I have invested time in the library. As a result of this I have also no idea how compatible it is with the latest mbed libraries :) Anyways to answer your question, after a quick look I think it has to be:
example
printf("Received %d bytes:\n\r%s\n\r", result, (char *)buffer.data());
Somehow I must have forgotten to update the example project. I'll see if I can compile the project myself and update to the latest versions of the mbed library.
There is an obvious limitation to the buffer class as well that you need to be aware of. The buffer class allocates dynamic memory when instantiated. If you only do this during the initialization of your application this is not a problem. Then the same memory area will be used throughout the run-time of the application. If you constantly allocate and destroy buffer objects you might fragment the controllers memory. Microcontrollers generally lack an MMU which normally mitigates the problem of fragmentation of memory.
Regards, Roy
Edit: Updated the TCP Client Example to the latest version of the mbed libraries and fixed the issue.