![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
This is a SLIP interface for the STM32F446RE Nucleo Board. It is designed to work specifically with the esp-link software for the ESP8266. The program is an example of a rest command.
Diff: STMClientResponse.h
- Revision:
- 0:70a6082c1bf7
diff -r 000000000000 -r 70a6082c1bf7 STMClientResponse.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/STMClientResponse.h Thu Jul 14 20:38:18 2016 +0000 @@ -0,0 +1,52 @@ +#ifndef _STM_CLIENT_RESPONSE_H_ +#define _STM_CLIENT_RESPONSE_H_ + +#if _MSC_VER +#define PACKED +#else +#define PACKED __attribute__ ((__packed__)) +#endif + +#include <mbed.h> +#include <string> + +typedef struct PACKED { + uint16_t cmd; // command to execute + uint16_t argc; // number of arguments + uint32_t value; // callback to invoke, NULL if none; or response value + uint8_t args[0]; +} STMClientPacket; + +class STMClientResponse { + public: + // Create a response from a packet, this is done internally in STMClient + STMClientResponse(STMClientPacket* packet); + STMClientResponse(void *packet); + + // Accessors to the response fields + uint16_t argc() { return _cmd->argc; } + uint16_t cmd() { return _cmd->cmd; } + uint32_t value() { return _cmd->value; } + + // Return the length of the next argument + uint16_t argLen() { return *(uint16_t*)_arg_ptr; } + // Pop one argument from the response, returns the actual length. Returns -1 if there is + // no arg left. + int16_t popArg(void* data, uint16_t maxLen); + // Pop one argument as a poiner from the response, returns the actual length. + int16_t popArgPtr(void **data); + // Pop one argument into a string buffer and append a null character. The buffer needs to + // be large enough (argLen()+1) + void popChar(char* buffer); + // Pop one argument into a String buffer + string popString(); + // Pop one argument into a String buffer + void popString(string* data); + + private: + uint16_t _arg_num; + uint8_t* _arg_ptr; + STMClientPacket* _cmd; +}; + +#endif // _STM_CLIENT_RESPONSE_H_ \ No newline at end of file