Astyle for test applications

pull/7745/head
Jarno Lamsa 2018-08-21 10:49:03 +03:00 committed by Olli-Pekka Puolitaival
parent 2d787c594b
commit 564fdd5a21
8 changed files with 448 additions and 259 deletions

View File

@ -35,7 +35,8 @@ void cmd_ready_cb(int retcode)
cmd_next(retcode);
}
void wrap_printf(const char *f, va_list a) {
void wrap_printf(const char *f, va_list a)
{
vprintf(f, a);
}
@ -44,13 +45,14 @@ int main()
cmd_init(&wrap_printf);
int c;
while((c = getchar()) != EOF) {
while ((c = getchar()) != EOF) {
cmd_char_input(c);
}
return 0;
}
FileHandle* mbed::mbed_override_console(int) {
FileHandle *mbed::mbed_override_console(int)
{
static UARTSerial console(STDIO_UART_TX, STDIO_UART_RX, SERIAL_CONSOLE_BAUD_RATE);
#if CONSOLE_FLOWCONTROL == CONSOLE_FLOWCONTROL_RTS
console.set_flow_control(SerialBase::RTS, STDIO_UART_RTS, NC);

View File

@ -404,7 +404,7 @@ static int handle_security_args(int argc, char *argv[], mlme_security_t *key)
}
}
if (cmd_parameter_val(argc, argv, "--key_source", &str)) {
if (strlen(str) == 2*8+7) {
if (strlen(str) == 2 * 8 + 7) {
if (string_to_bytes(str, key->Keysource, 8) != 0) {
return CMDLINE_RETCODE_INVALID_PARAMETERS;
}
@ -423,9 +423,9 @@ static void add_beacon(const uint8_t *beacon, uint8_t len)
}
unsigned int cur_beacon = received_beacons.count;
received_beacons.beacon_lengths[cur_beacon] = len;
received_beacons.beacons[cur_beacon] = (char*)ns_dyn_mem_temporary_alloc(len <= 75 ? 75:len);
received_beacons.beacons[cur_beacon] = (char *)ns_dyn_mem_temporary_alloc(len <= 75 ? 75 : len);
if (len != 0) {
std::memcpy(received_beacons.beacons[cur_beacon], beacon, len);
std::memcpy(received_beacons.beacons[cur_beacon], beacon, len);
}
++received_beacons.count;
}
@ -501,7 +501,7 @@ void mac_data_indication_handler(const mac_api_t *api, const mcps_data_ind_t *da
if (data->msduLength != expected_statuses.data_ind_len) {
return;
}
if (strncmp((const char*)data->msdu_ptr, (const char*)expected_statuses.data_ind, expected_statuses.data_ind_len) == 0) {
if (strncmp((const char *)data->msdu_ptr, (const char *)expected_statuses.data_ind, expected_statuses.data_ind_len) == 0) {
++data_count;
} else {
tr_warn("Received unexpected data!");
@ -533,13 +533,13 @@ void mac_mlme_confirm_handler(const mac_api_t *api, mlme_primitive id, const voi
break;
}
case MLME_GET: {
mlme_get_conf_t *get_data = (mlme_get_conf_t*)data;
mlme_get_conf_t *get_data = (mlme_get_conf_t *)data;
cmd_printf("MLME-GET.confirm\n");
if (!silent_mode) {
cmd_printf("status: %hhu (%s)\n", get_data->status, mlme_status_string(get_data->status));
cmd_printf("attr: %hhu\n", get_data->attr);
cmd_printf("attr_index: %hhu\n", get_data->attr_index);
cmd_printf("value_pointer: %s\n", mbed_trace_array((uint8_t*)get_data->value_pointer, get_data->value_size));
cmd_printf("value_pointer: %s\n", mbed_trace_array((uint8_t *)get_data->value_pointer, get_data->value_size));
cmd_printf("value_size: %hhu\n", get_data->value_size);
}
if (get_data->status == expected_statuses.get_conf) {
@ -559,7 +559,7 @@ void mac_mlme_confirm_handler(const mac_api_t *api, mlme_primitive id, const voi
break;
}
case MLME_SCAN: {
mlme_scan_conf_t *scan_data = (mlme_scan_conf_t*)data;
mlme_scan_conf_t *scan_data = (mlme_scan_conf_t *)data;
cmd_printf("MLME-SCAN.confirm\n");
if (!silent_mode) {
cmd_printf("status: %hhu (%s)\n", scan_data->status, mlme_status_string(scan_data->status));
@ -594,7 +594,7 @@ void mac_mlme_confirm_handler(const mac_api_t *api, mlme_primitive id, const voi
break;
}
case MLME_POLL: {
mlme_poll_conf_t *poll_data = (mlme_poll_conf_t*)data;
mlme_poll_conf_t *poll_data = (mlme_poll_conf_t *)data;
cmd_printf("MLME-POLL.confirm\n");
if (!silent_mode) {
cmd_printf("status: %hhu (%s)\n", poll_data->status, mlme_status_string(poll_data->status));
@ -630,7 +630,7 @@ void mac_mlme_indication_handler(const mac_api_t *api, mlme_primitive id, const
break;
}
case MLME_BEACON_NOTIFY: {
const mlme_beacon_ind_t *beacon_ind = (mlme_beacon_ind_t*)data;
const mlme_beacon_ind_t *beacon_ind = (mlme_beacon_ind_t *)data;
cmd_printf("MLME-BEACON-NOTIFY.indication\n");
if (!silent_mode) {
cmd_printf("BSN: %hhu\n", beacon_ind->BSN);
@ -638,7 +638,7 @@ void mac_mlme_indication_handler(const mac_api_t *api, mlme_primitive id, const
cmd_printf("PendAddrSpec.short_address_count %u\n", beacon_ind->PendAddrSpec.short_address_count);
cmd_printf("PendAddrSpec.extended_address_count %u\n", beacon_ind->PendAddrSpec.extended_address_count);
cmd_printf("AddrList %s\n", mbed_trace_array(beacon_ind->AddrList, beacon_ind->PendAddrSpec.short_address_count * 2 +
beacon_ind->PendAddrSpec.extended_address_count * 8));
beacon_ind->PendAddrSpec.extended_address_count * 8));
cmd_printf("beacon_data_length %hu\n", beacon_ind->beacon_data_length);
cmd_printf("beacon_data %s\n", mbed_trace_array(beacon_ind->beacon_data, beacon_ind->beacon_data_length));
}
@ -653,7 +653,7 @@ void mac_mlme_indication_handler(const mac_api_t *api, mlme_primitive id, const
}
case MLME_COMM_STATUS: {
cmd_printf("MLME-COMM-STATUS.indication\n");
const mlme_comm_status_t *comm_status_ind_data = (mlme_comm_status_t*)data;
const mlme_comm_status_t *comm_status_ind_data = (mlme_comm_status_t *)data;
if (!silent_mode) {
cmd_printf("PANId: 0x%04X\n", comm_status_ind_data->PANId);
cmd_printf("SrcAddrMode: %u\n", comm_status_ind_data->SrcAddrMode);
@ -820,7 +820,7 @@ int mac_data_command(int argc, char *argv[])
if (strlen(str) != data_req.msduLength) {
return CMDLINE_RETCODE_INVALID_PARAMETERS;
}
data_req.msdu = (uint8_t*)ns_dyn_mem_temporary_alloc(data_req.msduLength);
data_req.msdu = (uint8_t *)ns_dyn_mem_temporary_alloc(data_req.msduLength);
if (data_req.msdu == NULL) {
tr_error("Failed to allocate memory for the msdu");
return CMDLINE_RETCODE_FAIL;
@ -877,7 +877,7 @@ int mac_poll_command(int argc, char *argv[])
}
}
if (cmd_parameter_val(argc, argv, "--coord_address", &str)) {
int len = (poll_req.CoordAddrMode == 2 ? 2: 8);
int len = (poll_req.CoordAddrMode == 2 ? 2 : 8);
if (string_to_bytes(str, poll_req.CoordAddress, len) != 0) {
return CMDLINE_RETCODE_INVALID_PARAMETERS;
}
@ -913,7 +913,7 @@ int mac_set_command(int argc, char *argv[])
uint16_t val_uint16 = 0;
uint32_t val_uint32 = 0;
uint8_t *val_ptr_array = NULL;
cmd_printf("MLME-SET.request\n");
if (cmd_parameter_val(argc, argv, "--attr", &str)) {
uint32_t attribute = strtoul(str, NULL, 16);
@ -931,7 +931,7 @@ int mac_set_command(int argc, char *argv[])
}
}
if (cmd_parameter_val(argc, argv, "--value_ascii", &str)) {
val_ptr_array = (uint8_t*)ns_dyn_mem_temporary_alloc(strlen(str));
val_ptr_array = (uint8_t *)ns_dyn_mem_temporary_alloc(strlen(str));
if (val_ptr_array == NULL) {
tr_error("Failed to allocate memory for MLME-SET.request");
return CMDLINE_RETCODE_FAIL;
@ -940,7 +940,7 @@ int mac_set_command(int argc, char *argv[])
set_req.value_pointer = val_ptr_array;
} else if (cmd_parameter_val(argc, argv, "--value_bytes", &str)) {
size_t bytes = (strlen(str) + 1) / 3;
val_ptr_array = (uint8_t*)ns_dyn_mem_temporary_alloc(bytes);
val_ptr_array = (uint8_t *)ns_dyn_mem_temporary_alloc(bytes);
if (val_ptr_array == NULL) {
tr_error("Failed to allocate memory for MLME-SET.request");
return CMDLINE_RETCODE_FAIL;
@ -1072,7 +1072,7 @@ static int key_config_command(int argc, char *argv[])
int lookup_index = 0, device_index = 0, usage_index = 0;
if (cmd_parameter_val(argc, argv, "--key", &str)) {
if (strlen(str) == 2*16+15) {
if (strlen(str) == 2 * 16 + 15) {
if (string_to_bytes(str, key_descriptor.Key, 16) != 0) {
return CMDLINE_RETCODE_INVALID_PARAMETERS;
}
@ -1109,7 +1109,7 @@ static int key_config_command(int argc, char *argv[])
}
}
if (cmd_parameter_val(argc, argv, "--lookup_data", &str)) {
if (strlen(str) == 2*9+8) {
if (strlen(str) == 2 * 9 + 8) {
if (string_to_bytes(str, key_descriptor.KeyIdLookupList[lookup_index].LookupData, 9) != 0) {
return CMDLINE_RETCODE_INVALID_PARAMETERS;
}
@ -1224,7 +1224,7 @@ int mac_add_neighbour_command(int argc, char *argv[])
}
}
if (cmd_parameter_val(argc, argv, "--mac64", &str)) {
if (strlen(str) == 2*8+7) {
if (strlen(str) == 2 * 8 + 7) {
if (string_to_bytes(str, neighbour.ExtAddress, 8) != 0) {
return CMDLINE_RETCODE_INVALID_PARAMETERS;
}
@ -1268,7 +1268,7 @@ static int filter_start(int argc, char *argv[])
} else if (strcmp(str, "fixed") == 0) {
int32_t lqi, dbm;
if (cmd_parameter_int(argc, argv, "--lqi_m", &lqi) &&
cmd_parameter_int(argc, argv, "--dbm_m", &dbm)) {
cmd_parameter_int(argc, argv, "--dbm_m", &dbm)) {
return mac_filter_start(mac_interface->parent_id, MAC_FILTER_FIXED(lqi, dbm)) < 0 ? CMDLINE_RETCODE_FAIL : CMDLINE_RETCODE_SUCCESS;
}
}
@ -1284,9 +1284,9 @@ static int filter_add(int argc, char *argv[])
int32_t lqi_m, lqi_add, dbm_m, dbm_add;
if (cmd_parameter_int(argc, argv, "--lqi_m", &lqi_m) &&
cmd_parameter_int(argc, argv, "--lqi_add", &lqi_add) &&
cmd_parameter_int(argc, argv, "--dbm_m", &dbm_m) &&
cmd_parameter_int(argc, argv, "--dbm_add", &dbm_add)) {
cmd_parameter_int(argc, argv, "--lqi_add", &lqi_add) &&
cmd_parameter_int(argc, argv, "--dbm_m", &dbm_m) &&
cmd_parameter_int(argc, argv, "--dbm_add", &dbm_add)) {
} else if (cmd_parameter_val(argc, argv, "--mode", &str)) {
if (strcmp(str, "allow")) {
lqi_m = dbm_m = 256;
@ -1296,7 +1296,7 @@ static int filter_add(int argc, char *argv[])
} else if (strcmp(str, "fixed")) {
lqi_add = dbm_add = 0;
if (cmd_parameter_int(argc, argv, "--lqi_m", &lqi_m) &&
cmd_parameter_int(argc, argv, "--dbm_m", &dbm_m)) {
cmd_parameter_int(argc, argv, "--dbm_m", &dbm_m)) {
} else {
return CMDLINE_RETCODE_INVALID_PARAMETERS;
}
@ -1422,7 +1422,7 @@ int mac_config_status_command(int argc, char *argv[])
} else if (cmd_parameter_val(argc, argv, "--data_ind", &str)) {
size_t len = strlen(str);
ns_dyn_mem_free(expected_statuses.data_ind);
expected_statuses.data_ind = (uint8_t*)ns_dyn_mem_temporary_alloc(len);
expected_statuses.data_ind = (uint8_t *)ns_dyn_mem_temporary_alloc(len);
expected_statuses.data_ind_len = len;
std::memcpy(expected_statuses.data_ind, str, len);
} else if (cmd_parameter_int(argc, argv, "--get", &val)) {
@ -1539,7 +1539,7 @@ int mac_analyze_ed_command(int argc, char *argv[])
return CMDLINE_RETCODE_INVALID_PARAMETERS;
}
} else {
return CMDLINE_RETCODE_INVALID_PARAMETERS;
return CMDLINE_RETCODE_INVALID_PARAMETERS;
}
if (cmd_parameter_int(argc, argv, "--above", &val)) {

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "util.h"
#include "util.h"
int string_to_bytes(const char *str, uint8_t *buf, int bytes)
{
@ -38,40 +38,74 @@ int string_to_bytes(const char *str, uint8_t *buf, int bytes)
const char *mlme_status_string(uint8_t status)
{
switch (status) {
case MLME_SUCCESS: return "MLME_SUCCESS";
case MLME_BUSY_CHAN: return "MLME_BUSY_CHAN";
case MLME_BUSY_RX: return "MLME_BUSY_RX";
case MLME_BUSY_TX: return "MLME_BUSY_TX";
case MLME_FORCE_TRX_OFF: return "MLME_FORCE_TRX_OFF";
case MLME_IDLE: return "MLME_IDLE";
case MLME_RX_ON: return "MLME_RX_ON";
case MLME_TRX_OFF: return "MLME_TRX_OFF";
case MLME_TX_ON: return "MLME_TX_ON";
case MLME_COUNTER_ERROR: return "MLME_COUNTER_ERROR";
case MLME_IMPROPER_KEY_TYPE: return "MLME_IMPROPER_KEY_TYPE";
case MLME_IMPROPER_SECURITY_LEVEL: return "MLME_IMPROPER_SECURITY_LEVEL";
case MLME_UNSUPPORTED_LEGACY: return "MLME_UNSUPPORTED_LEGACY";
case MLME_UNSUPPORTED_SECURITY: return "MLME_UNSUPPORTED_SECURITY";
case MLME_SECURITY_FAIL: return "MLME_SECURITY_FAIL";
case MLME_FRAME_TOO_LONG: return "MLME_FRAME_TOO_LONG";
case MLME_INVALID_HANDLE: return "MLME_INVALID_HANDLE";
case MLME_INVALID_PARAMETER: return "MLME_INVALID_PARAMETER";
case MLME_TX_NO_ACK: return "MLME_TX_NO_ACK";
case MLME_NO_BEACON: return "MLME_NO_BEACON";
case MLME_NO_DATA: return "MLME_NO_DATA";
case MLME_NO_SHORT_ADDRESS: return "MLME_NO_SHORT_ADDRESS";
case MLME_PAN_ID_CONFLICT: return "MLME_PAN_ID_CONFLICT";
case MLME_TRANSACTION_EXPIRED: return "MLME_TRANSACTION_EXPIRED";
case MLME_TRANSACTION_OVERFLOW: return "MLME_TRANSACTION_OVERFLOW";
case MLME_UNAVAILABLE_KEY: return "MLME_UNAVAILABLE_KEY";
case MLME_UNSUPPORTED_ATTRIBUTE: return "MLME_UNSUPPORTED_ATTRIBUTE";
case MLME_INVALID_ADDRESS: return "MLME_INVALID_ADDRESS";
case MLME_INVALID_INDEX: return "MLME_INVALID_INDEX";
case MLME_LIMIT_REACHED: return "MLME_LIMIT_REACHED";
case MLME_READ_ONLY: return "MLME_READ_ONLY";
case MLME_SCAN_IN_PROGRESS: return "MLME_SCAN_IN_PROGRESS";
case MLME_DATA_POLL_NOTIFICATION: return "MLME_DATA_POLL_NOTIFICATION";
default: return NULL;
case MLME_SUCCESS:
return "MLME_SUCCESS";
case MLME_BUSY_CHAN:
return "MLME_BUSY_CHAN";
case MLME_BUSY_RX:
return "MLME_BUSY_RX";
case MLME_BUSY_TX:
return "MLME_BUSY_TX";
case MLME_FORCE_TRX_OFF:
return "MLME_FORCE_TRX_OFF";
case MLME_IDLE:
return "MLME_IDLE";
case MLME_RX_ON:
return "MLME_RX_ON";
case MLME_TRX_OFF:
return "MLME_TRX_OFF";
case MLME_TX_ON:
return "MLME_TX_ON";
case MLME_COUNTER_ERROR:
return "MLME_COUNTER_ERROR";
case MLME_IMPROPER_KEY_TYPE:
return "MLME_IMPROPER_KEY_TYPE";
case MLME_IMPROPER_SECURITY_LEVEL:
return "MLME_IMPROPER_SECURITY_LEVEL";
case MLME_UNSUPPORTED_LEGACY:
return "MLME_UNSUPPORTED_LEGACY";
case MLME_UNSUPPORTED_SECURITY:
return "MLME_UNSUPPORTED_SECURITY";
case MLME_SECURITY_FAIL:
return "MLME_SECURITY_FAIL";
case MLME_FRAME_TOO_LONG:
return "MLME_FRAME_TOO_LONG";
case MLME_INVALID_HANDLE:
return "MLME_INVALID_HANDLE";
case MLME_INVALID_PARAMETER:
return "MLME_INVALID_PARAMETER";
case MLME_TX_NO_ACK:
return "MLME_TX_NO_ACK";
case MLME_NO_BEACON:
return "MLME_NO_BEACON";
case MLME_NO_DATA:
return "MLME_NO_DATA";
case MLME_NO_SHORT_ADDRESS:
return "MLME_NO_SHORT_ADDRESS";
case MLME_PAN_ID_CONFLICT:
return "MLME_PAN_ID_CONFLICT";
case MLME_TRANSACTION_EXPIRED:
return "MLME_TRANSACTION_EXPIRED";
case MLME_TRANSACTION_OVERFLOW:
return "MLME_TRANSACTION_OVERFLOW";
case MLME_UNAVAILABLE_KEY:
return "MLME_UNAVAILABLE_KEY";
case MLME_UNSUPPORTED_ATTRIBUTE:
return "MLME_UNSUPPORTED_ATTRIBUTE";
case MLME_INVALID_ADDRESS:
return "MLME_INVALID_ADDRESS";
case MLME_INVALID_INDEX:
return "MLME_INVALID_INDEX";
case MLME_LIMIT_REACHED:
return "MLME_LIMIT_REACHED";
case MLME_READ_ONLY:
return "MLME_READ_ONLY";
case MLME_SCAN_IN_PROGRESS:
return "MLME_SCAN_IN_PROGRESS";
case MLME_DATA_POLL_NOTIFICATION:
return "MLME_DATA_POLL_NOTIFICATION";
default:
return NULL;
}
}

View File

@ -21,18 +21,18 @@
#include "ip4string.h"
#ifndef MBED_CONF_APP_CONNECT_STATEMENT
#error [NOT_SUPPORTED] No network configuration found for this target.
#endif
#ifndef MBED_CONF_APP_CONNECT_STATEMENT
#error [NOT_SUPPORTED] No network configuration found for this target.
#endif
#include <string.h>
#include MBED_CONF_APP_HEADER_FILE
#define TRACE_GROUP "Aifc"
NetworkInterface* net;
NetworkInterface *net;
NetworkInterface* get_interface(void)
NetworkInterface *get_interface(void)
{
return net;
}
@ -41,12 +41,12 @@ int cmd_ifup(int argc, char *argv[]);
int cmd_ifdown(int argc, char *argv[]);
int cmd_ifconfig(int argc, char *argv[]);
const char* MAN_IFCONFIG = " ifup interface up\r\n"\
" ifdown interface down\r\n";
const char *MAN_IFCONFIG = " ifup interface up\r\n"\
" ifdown interface down\r\n";
static void ifconfig_print()
{
if(!net) {
if (!net) {
cmd_printf("No interface configured\r\n");
return;
}
@ -62,7 +62,7 @@ static void ifconfig_print()
cmd_printf("No IP address\r\n");
}
str = net->get_mac_address();
if(str) {
if (str) {
cmd_printf("MAC-48: %s\r\n", str);
} else {
cmd_printf("MAC-48: unknown\r\n");
@ -85,11 +85,13 @@ int cmd_ifconfig(int argc, char *argv[])
int cmd_ifup(int argc, char *argv[])
{
if(!net)
if (!net) {
net = MBED_CONF_APP_OBJECT_CONSTRUCTION;
}
int err = MBED_CONF_APP_CONNECT_STATEMENT;
if(err != NSAPI_ERROR_OK)
if (err != NSAPI_ERROR_OK) {
return CMDLINE_RETCODE_FAIL;
}
ifconfig_print();
return CMDLINE_RETCODE_SUCCESS;
@ -97,38 +99,59 @@ int cmd_ifup(int argc, char *argv[])
int cmd_ifdown(int argc, char *argv[])
{
if(!net)
if (!net) {
return CMDLINE_RETCODE_FAIL;
}
int err = net->disconnect();
if(err != NSAPI_ERROR_OK)
if (err != NSAPI_ERROR_OK) {
return CMDLINE_RETCODE_FAIL;
}
return CMDLINE_RETCODE_SUCCESS;
}
const char* networkstack_error_to_str(int errorcode)
const char *networkstack_error_to_str(int errorcode)
{
switch(errorcode) {
case NSAPI_ERROR_OK: return "NSAPI_ERROR_OK";
case NSAPI_ERROR_WOULD_BLOCK: return "NSAPI_ERROR_WOULD_BLOCK";
case NSAPI_ERROR_UNSUPPORTED: return "NSAPI_ERROR_UNSUPPORTED";
case NSAPI_ERROR_PARAMETER: return "NSAPI_ERROR_PARAMETER";
case NSAPI_ERROR_NO_CONNECTION: return "NSAPI_ERROR_NO_CONNECTION";
case NSAPI_ERROR_NO_SOCKET: return "NSAPI_ERROR_NO_SOCKET";
case NSAPI_ERROR_NO_ADDRESS: return "NSAPI_ERROR_NO_ADDRESS";
case NSAPI_ERROR_NO_MEMORY: return "NSAPI_ERROR_NO_MEMORY";
case NSAPI_ERROR_NO_SSID: return "NSAPI_ERROR_NO_SSID";
case NSAPI_ERROR_DNS_FAILURE: return "NSAPI_ERROR_DNS_FAILURE";
case NSAPI_ERROR_DHCP_FAILURE: return "NSAPI_ERROR_DHCP_FAILURE";
case NSAPI_ERROR_AUTH_FAILURE: return "NSAPI_ERROR_AUTH_FAILURE";
case NSAPI_ERROR_DEVICE_ERROR: return "NSAPI_ERROR_DEVICE_ERROR";
case NSAPI_ERROR_IN_PROGRESS: return "NSAPI_ERROR_IN_PROGRESS";
case NSAPI_ERROR_ALREADY: return "NSAPI_ERROR_ALREADY";
case NSAPI_ERROR_IS_CONNECTED: return "NSAPI_ERROR_IS_CONNECTED";
case NSAPI_ERROR_CONNECTION_LOST: return "NSAPI_ERROR_CONNECTION_LOST";
case NSAPI_ERROR_CONNECTION_TIMEOUT: return "NSAPI_ERROR_CONNECTION_TIMEOUT";
default: return "unknown error code";
switch (errorcode) {
case NSAPI_ERROR_OK:
return "NSAPI_ERROR_OK";
case NSAPI_ERROR_WOULD_BLOCK:
return "NSAPI_ERROR_WOULD_BLOCK";
case NSAPI_ERROR_UNSUPPORTED:
return "NSAPI_ERROR_UNSUPPORTED";
case NSAPI_ERROR_PARAMETER:
return "NSAPI_ERROR_PARAMETER";
case NSAPI_ERROR_NO_CONNECTION:
return "NSAPI_ERROR_NO_CONNECTION";
case NSAPI_ERROR_NO_SOCKET:
return "NSAPI_ERROR_NO_SOCKET";
case NSAPI_ERROR_NO_ADDRESS:
return "NSAPI_ERROR_NO_ADDRESS";
case NSAPI_ERROR_NO_MEMORY:
return "NSAPI_ERROR_NO_MEMORY";
case NSAPI_ERROR_NO_SSID:
return "NSAPI_ERROR_NO_SSID";
case NSAPI_ERROR_DNS_FAILURE:
return "NSAPI_ERROR_DNS_FAILURE";
case NSAPI_ERROR_DHCP_FAILURE:
return "NSAPI_ERROR_DHCP_FAILURE";
case NSAPI_ERROR_AUTH_FAILURE:
return "NSAPI_ERROR_AUTH_FAILURE";
case NSAPI_ERROR_DEVICE_ERROR:
return "NSAPI_ERROR_DEVICE_ERROR";
case NSAPI_ERROR_IN_PROGRESS:
return "NSAPI_ERROR_IN_PROGRESS";
case NSAPI_ERROR_ALREADY:
return "NSAPI_ERROR_ALREADY";
case NSAPI_ERROR_IS_CONNECTED:
return "NSAPI_ERROR_IS_CONNECTED";
case NSAPI_ERROR_CONNECTION_LOST:
return "NSAPI_ERROR_CONNECTION_LOST";
case NSAPI_ERROR_CONNECTION_TIMEOUT:
return "NSAPI_ERROR_CONNECTION_TIMEOUT";
default:
return "unknown error code";
}
}

View File

@ -26,9 +26,9 @@
*
* @return pointer to the network interface, or NULL if unrecognized or ambiguous
*/
NetworkInterface* get_interface(void);
NetworkInterface *get_interface(void);
void cmd_ifconfig_init(void);
const char* networkstack_error_to_str(int errorcode);
const char *networkstack_error_to_str(int errorcode);
#endif

View File

@ -88,71 +88,71 @@
class SInfo;
static Queue<SInfo, 10> event_queue;
static int id_count=0;
static int id_count = 0;
class SInfo
{
public:
class SInfo {
public:
enum SocketType {
TCP_CLIENT,
TCP_SERVER,
UDP
};
SInfo(TCPSocket* sock):
_id(id_count++),
_sock(sock),
_type(SInfo::TCP_CLIENT),
_blocking(true),
_dataLen(0),
_maxRecvLen(0),
_repeatBufferFill(1),
_receivedTotal(0),
_receiverThread(NULL),
_receiveBuffer(NULL),
_senderThreadId(NULL),
_receiverThreadId(NULL),
_packetSizes(NULL),
_check_pattern(false)
SInfo(TCPSocket *sock):
_id(id_count++),
_sock(sock),
_type(SInfo::TCP_CLIENT),
_blocking(true),
_dataLen(0),
_maxRecvLen(0),
_repeatBufferFill(1),
_receivedTotal(0),
_receiverThread(NULL),
_receiveBuffer(NULL),
_senderThreadId(NULL),
_receiverThreadId(NULL),
_packetSizes(NULL),
_check_pattern(false)
{
assert(sock);
}
SInfo(TCPServer* sock):
_id(id_count++),
_sock(sock),
_type(SInfo::TCP_SERVER),
_blocking(true),
_dataLen(0),
_maxRecvLen(0),
_repeatBufferFill(1),
_receivedTotal(0),
_receiverThread(NULL),
_receiveBuffer(NULL),
_senderThreadId(NULL),
_receiverThreadId(NULL),
_packetSizes(NULL),
_check_pattern(false)
SInfo(TCPServer *sock):
_id(id_count++),
_sock(sock),
_type(SInfo::TCP_SERVER),
_blocking(true),
_dataLen(0),
_maxRecvLen(0),
_repeatBufferFill(1),
_receivedTotal(0),
_receiverThread(NULL),
_receiveBuffer(NULL),
_senderThreadId(NULL),
_receiverThreadId(NULL),
_packetSizes(NULL),
_check_pattern(false)
{
assert(sock);
}
SInfo(UDPSocket* sock):
_id(id_count++),
_sock(sock),
_type(SInfo::UDP),
_blocking(true),
_dataLen(0),
_maxRecvLen(0),
_repeatBufferFill(1),
_receivedTotal(0),
_receiverThread(NULL),
_receiveBuffer(NULL),
_senderThreadId(NULL),
_receiverThreadId(NULL),
_packetSizes(NULL),
_check_pattern(false)
SInfo(UDPSocket *sock):
_id(id_count++),
_sock(sock),
_type(SInfo::UDP),
_blocking(true),
_dataLen(0),
_maxRecvLen(0),
_repeatBufferFill(1),
_receivedTotal(0),
_receiverThread(NULL),
_receiveBuffer(NULL),
_senderThreadId(NULL),
_receiverThreadId(NULL),
_packetSizes(NULL),
_check_pattern(false)
{
assert(sock);
}
~SInfo() {
~SInfo()
{
this->_sock->sigio(Callback<void()>());
if (this->_receiverThread) {
this->_receiverThread->terminate();
@ -163,35 +163,122 @@ class SInfo
}
delete this->_sock;
}
int id() const { return this->_id; }
Socket& socket() { return *(this->_sock); }
Socket& socket() const { return *(this->_sock); }
TCPSocket *tcp_socket() { return this->_type == SInfo::TCP_CLIENT ? static_cast<TCPSocket *>(this->_sock) : NULL; }
TCPServer *tcp_server() { return this->_type == SInfo::TCP_SERVER ? static_cast<TCPServer *>(this->_sock) : NULL; }
UDPSocket *udp_socket() { return this->_type == SInfo::UDP ? static_cast<UDPSocket *>(this->_sock) : NULL; }
SInfo::SocketType type() const { return this->_type; }
void setDataCount(int dataCount) { this->_dataLen = dataCount; }
int getDataCount() { return this->_dataLen; }
void setReceiverThread(Thread *receiverThread) { this->_receiverThread = receiverThread; }
Thread *getReceiverThread() { return this->_receiverThread; }
void setReceiveBuffer(uint8_t *receiveBuffer) { this->_receiveBuffer = receiveBuffer; }
uint8_t *getReceiveBuffer() { return this->_receiveBuffer; }
void setMaxRecvLen(int recvLen) { this->_maxRecvLen = recvLen; }
int getMaxRecvLen() { return this->_maxRecvLen; }
void setRepeatBufferFill(int n) { this->_repeatBufferFill = n; }
int getRepeatBufferFill() { return this->_repeatBufferFill; }
void setRecvTotal(int n) { this->_receivedTotal = n; }
int getRecvTotal() { return this->_receivedTotal; }
void setSenderThreadId(osThreadId threadID) { this->_senderThreadId = threadID; }
void setReceiverThreadId(osThreadId threadID) { this->_receiverThreadId = threadID; }
osThreadId getSenderThreadId() { return this->_senderThreadId; }
osThreadId getReceiverThreadId() { return this->_receiverThreadId; }
void setPacketSizeArray(int *ptr) { this->_packetSizes = ptr; }
int *getPacketSizeArray() { return this->_packetSizes; }
void setUnavailable() { this->_available = false;}
void setAvailable() {this->_available = true;}
bool available() { return this->_available; }
void set_pattern_check(bool enabled) { _check_pattern = enabled; };
int id() const
{
return this->_id;
}
Socket &socket()
{
return *(this->_sock);
}
Socket &socket() const
{
return *(this->_sock);
}
TCPSocket *tcp_socket()
{
return this->_type == SInfo::TCP_CLIENT ? static_cast<TCPSocket *>(this->_sock) : NULL;
}
TCPServer *tcp_server()
{
return this->_type == SInfo::TCP_SERVER ? static_cast<TCPServer *>(this->_sock) : NULL;
}
UDPSocket *udp_socket()
{
return this->_type == SInfo::UDP ? static_cast<UDPSocket *>(this->_sock) : NULL;
}
SInfo::SocketType type() const
{
return this->_type;
}
void setDataCount(int dataCount)
{
this->_dataLen = dataCount;
}
int getDataCount()
{
return this->_dataLen;
}
void setReceiverThread(Thread *receiverThread)
{
this->_receiverThread = receiverThread;
}
Thread *getReceiverThread()
{
return this->_receiverThread;
}
void setReceiveBuffer(uint8_t *receiveBuffer)
{
this->_receiveBuffer = receiveBuffer;
}
uint8_t *getReceiveBuffer()
{
return this->_receiveBuffer;
}
void setMaxRecvLen(int recvLen)
{
this->_maxRecvLen = recvLen;
}
int getMaxRecvLen()
{
return this->_maxRecvLen;
}
void setRepeatBufferFill(int n)
{
this->_repeatBufferFill = n;
}
int getRepeatBufferFill()
{
return this->_repeatBufferFill;
}
void setRecvTotal(int n)
{
this->_receivedTotal = n;
}
int getRecvTotal()
{
return this->_receivedTotal;
}
void setSenderThreadId(osThreadId threadID)
{
this->_senderThreadId = threadID;
}
void setReceiverThreadId(osThreadId threadID)
{
this->_receiverThreadId = threadID;
}
osThreadId getSenderThreadId()
{
return this->_senderThreadId;
}
osThreadId getReceiverThreadId()
{
return this->_receiverThreadId;
}
void setPacketSizeArray(int *ptr)
{
this->_packetSizes = ptr;
}
int *getPacketSizeArray()
{
return this->_packetSizes;
}
void setUnavailable()
{
this->_available = false;
}
void setAvailable()
{
this->_available = true;
}
bool available()
{
return this->_available;
}
void set_pattern_check(bool enabled)
{
_check_pattern = enabled;
};
bool check_pattern(void *buffer, size_t len);
const char *type_str() const
@ -213,19 +300,50 @@ class SInfo
}
return str;
}
bool blocking() const { return this->_blocking; }
void set_blocking(bool blocking) { socket().set_blocking(blocking); this->_blocking = blocking; }
bool can_connect() { return (this->type() == SInfo::TCP_CLIENT); }
bool can_bind() { return (this->type() == SInfo::UDP || this->type() == SInfo::TCP_SERVER); }
bool can_send() { return (this->type() == SInfo::TCP_CLIENT); }
bool can_recv() { return (this->type() == SInfo::TCP_CLIENT); }
bool can_sendto() { return (this->type() == SInfo::UDP); }
bool can_recvfrom() { return (this->type() == SInfo::UDP); }
bool can_listen() { return (this->type() == SInfo::TCP_SERVER); }
bool can_accept() { return (this->type() == SInfo::TCP_SERVER); }
private:
bool blocking() const
{
return this->_blocking;
}
void set_blocking(bool blocking)
{
socket().set_blocking(blocking);
this->_blocking = blocking;
}
bool can_connect()
{
return (this->type() == SInfo::TCP_CLIENT);
}
bool can_bind()
{
return (this->type() == SInfo::UDP || this->type() == SInfo::TCP_SERVER);
}
bool can_send()
{
return (this->type() == SInfo::TCP_CLIENT);
}
bool can_recv()
{
return (this->type() == SInfo::TCP_CLIENT);
}
bool can_sendto()
{
return (this->type() == SInfo::UDP);
}
bool can_recvfrom()
{
return (this->type() == SInfo::UDP);
}
bool can_listen()
{
return (this->type() == SInfo::TCP_SERVER);
}
bool can_accept()
{
return (this->type() == SInfo::TCP_SERVER);
}
private:
const int _id;
Socket* _sock;
Socket *_sock;
const SInfo::SocketType _type;
bool _blocking;
int _dataLen;
@ -243,7 +361,7 @@ class SInfo
SInfo();
};
static std::vector<SInfo*> m_sockets;
static std::vector<SInfo *> m_sockets;
static enum {
PRINT_DISABLED,
@ -274,12 +392,13 @@ static void print_data_as_hex(const uint8_t *buf, int len, int col_width);
static void generate_RFC_864_pattern(size_t offset, uint8_t *buf, size_t len)
{
while (len--) {
if (offset % 74 == 72)
if (offset % 74 == 72) {
*buf++ = '\r';
else if (offset % 74 == 73)
} else if (offset % 74 == 73) {
*buf++ = '\n';
else
*buf++ = ' ' + (offset%74 + offset/74) % 95 ;
} else {
*buf++ = ' ' + (offset % 74 + offset / 74) % 95 ;
}
offset++;
}
}
@ -290,19 +409,21 @@ bool SInfo::check_pattern(void *buffer, size_t len)
return true;
}
void *buf = malloc(len);
if (!buf)
if (!buf) {
return false;
}
size_t offset = _receivedTotal;
generate_RFC_864_pattern(offset, (uint8_t*)buf, len);
generate_RFC_864_pattern(offset, (uint8_t *)buf, len);
bool match = memcmp(buf, buffer, len) == 0;
if (!match) {
cmd_printf("Pattern check failed\r\nWAS:%.*s\r\nREF:%.*s\r\n", len, (char*)buffer, len, (char*)buf);
cmd_printf("Pattern check failed\r\nWAS:%.*s\r\nREF:%.*s\r\n", len, (char *)buffer, len, (char *)buf);
}
free(buf);
return match;
}
static void sigio_handler(SInfo *info) {
static void sigio_handler(SInfo *info)
{
if (info->getReceiverThreadId()) {
osSignalSet(info->getReceiverThreadId(), SIGNAL_SIGIO);
}
@ -335,19 +456,21 @@ int handle_nsapi_size_or_error(const char *function, nsapi_size_or_error_t ret)
return CMDLINE_RETCODE_SUCCESS;
}
static SInfo *get_sinfo(int id) {
static SInfo *get_sinfo(int id)
{
for (std::vector<SInfo*>::iterator it = m_sockets.begin(); it != m_sockets.end(); it++) {
if( (*it)->id() == id) {
for (std::vector<SInfo *>::iterator it = m_sockets.begin(); it != m_sockets.end(); it++) {
if ((*it)->id() == id) {
return *it;
}
}
return NULL;
}
static int del_sinfo(SInfo *info) {
for (std::vector<SInfo*>::iterator it = m_sockets.begin(); it != m_sockets.end(); it++) {
if( (*it) == info) {
static int del_sinfo(SInfo *info)
{
for (std::vector<SInfo *>::iterator it = m_sockets.begin(); it != m_sockets.end(); it++) {
if ((*it) == info) {
delete info;
m_sockets.erase(it);
return CMDLINE_RETCODE_SUCCESS;
@ -397,14 +520,14 @@ static void udp_receiver_thread(SInfo *info)
info->setReceiverThreadId(Thread::gettid());
while (i<n) {
ret = static_cast<UDPSocket&>(info->socket()).recvfrom(&addr, info->getReceiveBuffer() + received, info->getDataCount() - received);
while (i < n) {
ret = static_cast<UDPSocket &>(info->socket()).recvfrom(&addr, info->getReceiveBuffer() + received, info->getDataCount() - received);
if (ret > 0) {
if (!info->check_pattern(info->getReceiveBuffer() + received, ret)) {
return;
}
received += ret;
packetSizes[i%PACKET_SIZE_ARRAY_LEN] = ret;
packetSizes[i % PACKET_SIZE_ARRAY_LEN] = ret;
i++;
info->setRecvTotal(info->getRecvTotal() + ret);
} else if (ret == NSAPI_ERROR_WOULD_BLOCK) {
@ -431,7 +554,7 @@ static nsapi_size_or_error_t start_udp_receiver_thread(SInfo *info, int argc, ch
return CMDLINE_RETCODE_INVALID_PARAMETERS;
}
}
uint8_t *dataIn = (uint8_t *)malloc(max_size+1);
uint8_t *dataIn = (uint8_t *)malloc(max_size + 1);
if (!dataIn) {
cmd_printf("malloc() failed\r\n");
return CMDLINE_RETCODE_FAIL;
@ -441,10 +564,10 @@ static nsapi_size_or_error_t start_udp_receiver_thread(SInfo *info, int argc, ch
cmd_printf("Allocation failed\r\n");
return CMDLINE_RETCODE_FAIL;
}
for (int i=0; i<PACKET_SIZE_ARRAY_LEN; i++) {
for (int i = 0; i < PACKET_SIZE_ARRAY_LEN; i++) {
packetSizes[i] = 0;
}
memset(dataIn, 0x00, max_size+1);
memset(dataIn, 0x00, max_size + 1);
info->setReceiveBuffer(dataIn);
info->setDataCount(max_size);
info->setRepeatBufferFill(n);
@ -483,14 +606,13 @@ static nsapi_size_or_error_t udp_sendto_command_handler(SInfo *info, int argc, c
if (strcmp(argv[5], "NULL") == 0) {
data = NULL;
len = 0;
}
else {
} else {
data = argv[5];
len = strlen(argv[5]);
}
}
nsapi_size_or_error_t ret = static_cast<UDPSocket&>(info->socket()).sendto(host, port, data, len);
nsapi_size_or_error_t ret = static_cast<UDPSocket &>(info->socket()).sendto(host, port, data, len);
if (ret > 0) {
cmd_printf("sent: %d bytes\r\n", ret);
}
@ -516,13 +638,14 @@ static nsapi_size_or_error_t udp_recvfrom_command_handler(SInfo *info, int argc,
cmd_printf("malloc() failed\r\n");
return CMDLINE_RETCODE_FAIL;
}
nsapi_size_or_error_t ret = static_cast<UDPSocket&>(info->socket()).recvfrom(&addr, data, len);
nsapi_size_or_error_t ret = static_cast<UDPSocket &>(info->socket()).recvfrom(&addr, data, len);
if (ret > 0) {
cmd_printf("UDPSocket::recvfrom, addr=%s port=%d\r\n", addr.get_ip_address(), addr.get_port());
cmd_printf("received: %d bytes\r\n", ret);
print_data((const uint8_t *)data, len);
if(!info->check_pattern(data, len))
ret=-1;
if (!info->check_pattern(data, len)) {
ret = -1;
}
info->setRecvTotal(info->getRecvTotal() + ret);
}
free(data);
@ -539,16 +662,17 @@ static void tcp_receiver_thread(SInfo *info)
info->setReceiverThreadId(Thread::gettid());
for (i=0; i<n; i++) {
for (i = 0; i < n; i++) {
received = 0;
while (received < bufferSize) {
ret = static_cast<TCPSocket&>(info->socket()).recv(info->getReceiveBuffer() + received, recv_len - received);
ret = static_cast<TCPSocket &>(info->socket()).recv(info->getReceiveBuffer() + received, recv_len - received);
if (ret > 0) {
if(!info->check_pattern(info->getReceiveBuffer() + received, ret))
if (!info->check_pattern(info->getReceiveBuffer() + received, ret)) {
return;
}
received += ret;
info->setRecvTotal(info->getRecvTotal() + ret);
} else if (ret == NSAPI_ERROR_WOULD_BLOCK){
} else if (ret == NSAPI_ERROR_WOULD_BLOCK) {
Thread::signal_wait(SIGNAL_SIGIO);
} else {
handle_nsapi_size_or_error("Thread: TCPSocket::recv()", ret);
@ -584,7 +708,7 @@ static nsapi_size_or_error_t start_tcp_receiver_thread(SInfo *info, int argc, ch
}
}
uint8_t *dataIn = (uint8_t *)malloc(len+1);
uint8_t *dataIn = (uint8_t *)malloc(len + 1);
if (!dataIn) {
cmd_printf("malloc() failed\r\n");
return CMDLINE_RETCODE_FAIL;
@ -618,7 +742,7 @@ static nsapi_size_or_error_t tcp_send_command_handler(SInfo *info, int argc, cha
len = strlen(argv[3]);
}
ret = static_cast<TCPSocket&>(info->socket()).send(data, len);
ret = static_cast<TCPSocket &>(info->socket()).send(data, len);
if (ret > 0) {
cmd_printf("sent: %d bytes\r\n", ret);
@ -644,12 +768,13 @@ static nsapi_size_or_error_t tcp_recv_command_handler(SInfo *info, int argc, cha
return CMDLINE_RETCODE_FAIL;
}
nsapi_size_or_error_t ret = static_cast<TCPSocket&>(info->socket()).recv(data, len);
nsapi_size_or_error_t ret = static_cast<TCPSocket &>(info->socket()).recv(data, len);
if (ret > 0) {
cmd_printf("received: %d bytes\r\n", ret);
print_data((const uint8_t *)data, ret);
if(!info->check_pattern(data, ret))
ret=-1;
if (!info->check_pattern(data, ret)) {
ret = -1;
}
info->setRecvTotal(info->getRecvTotal() + ret);
}
free(data);
@ -681,21 +806,21 @@ static nsapi_size_or_error_t recv_all(char *const rbuffer, const int expt_len, S
static void bg_traffic_thread(SInfo *info)
{
static const int data_len = 10;
char sbuffer[data_len+1] = "dummydata_";
char rbuffer[data_len+1];
char sbuffer[data_len + 1] = "dummydata_";
char rbuffer[data_len + 1];
int scount, rtotal = 0;
info->setSenderThreadId(Thread::gettid());
for(;;) {
for (;;) {
if (!info->available()) {
(void)handle_nsapi_size_or_error(__func__, rtotal);
break;
}
sbuffer[data_len-1] = 'A' + (rand() % 26);
sbuffer[data_len - 1] = 'A' + (rand() % 26);
scount = info->tcp_socket()->send(sbuffer, data_len);
rtotal = recv_all(rbuffer, data_len, info);
if(scount != rtotal || (strcmp(sbuffer, rbuffer) != 0)) {
if (scount != rtotal || (strcmp(sbuffer, rbuffer) != 0)) {
info->setUnavailable();
tr_err("Background received data does not match to sent data");
@ -732,7 +857,7 @@ static void thread_clean_up(SInfo *info)
static int cmd_socket(int argc, char *argv[])
{
if(cmd_parameter_index(argc, argv, "new") == 1) {
if (cmd_parameter_index(argc, argv, "new") == 1) {
return cmd_socket_new(argc, argv);
} else if (cmd_parameter_index(argc, argv, "print-mode") > 0) {
if (cmd_parameter_index(argc, argv, "--string") > 0) {
@ -755,8 +880,9 @@ static int cmd_socket(int argc, char *argv[])
printing_col_width = (int)parsed_col_width;
}
// Allow print-mode to be used as a parameter to other commands
if (cmd_parameter_index(argc, argv, "print-mode") == 1)
if (cmd_parameter_index(argc, argv, "print-mode") == 1) {
return CMDLINE_RETCODE_SUCCESS;
}
}
// Rest of the commands require Socket
@ -767,13 +893,13 @@ static int cmd_socket(int argc, char *argv[])
}
bool enable_pattern_check;
if(cmd_parameter_bool(argc, argv, "set_RFC_864_pattern_check", &enable_pattern_check)) {
if (cmd_parameter_bool(argc, argv, "set_RFC_864_pattern_check", &enable_pattern_check)) {
info->set_pattern_check(enable_pattern_check);
return CMDLINE_RETCODE_SUCCESS;
}
// Helper macro for checking the which command was given
#define COMMAND_IS(cmd) (cmd_parameter_index(argc, argv, cmd) == 2)
#define COMMAND_IS(cmd) (cmd_parameter_index(argc, argv, cmd) == 2)
/*
* Generic Socket commands:
@ -793,7 +919,7 @@ static int cmd_socket(int argc, char *argv[])
return CMDLINE_RETCODE_FAIL;
}
switch(info->type()) {
switch (info->type()) {
case SInfo::TCP_CLIENT:
return handle_nsapi_error("Socket::open()", info->tcp_socket()->open(interface));
case SInfo::UDP:
@ -841,10 +967,11 @@ static int cmd_socket(int argc, char *argv[])
cmd_printf("Need timeout value");
return CMDLINE_RETCODE_INVALID_PARAMETERS;
}
if (ms == -1)
if (ms == -1) {
info->set_blocking(true);
else
} else {
info->set_blocking(false);
}
info->socket().set_timeout(ms);
return CMDLINE_RETCODE_SUCCESS;
@ -860,7 +987,7 @@ static int cmd_socket(int argc, char *argv[])
* sendto, recvfrom
*/
if ((COMMAND_IS("sendto") || COMMAND_IS("recvfrom") || COMMAND_IS("start_udp_receiver_thread")
|| COMMAND_IS("last_data_received")) && info->type() != SInfo::UDP) {
|| COMMAND_IS("last_data_received")) && info->type() != SInfo::UDP) {
cmd_printf("Not UDPSocket\r\n");
return CMDLINE_RETCODE_FAIL;
}
@ -876,7 +1003,7 @@ static int cmd_socket(int argc, char *argv[])
if (info->getPacketSizeArray()) {
int *packetSizes = info->getPacketSizeArray();
cmd_printf("packet_sizes: ");
for (int i=0; i<PACKET_SIZE_ARRAY_LEN; i++) {
for (int i = 0; i < PACKET_SIZE_ARRAY_LEN; i++) {
cmd_printf("%d ", packetSizes[i]);
}
cmd_printf("\r\n");
@ -894,10 +1021,10 @@ static int cmd_socket(int argc, char *argv[])
* connect, send, recv
*/
if ((COMMAND_IS("connect") || COMMAND_IS("recv")
|| COMMAND_IS("start_tcp_receiver_thread") || COMMAND_IS("join_tcp_receiver_thread")
|| COMMAND_IS("start_bg_traffic_thread") || COMMAND_IS("join_bg_traffic_thread")
|| COMMAND_IS("setsockopt_keepalive") || COMMAND_IS("getsockopt_keepalive"))
&& info->type() != SInfo::TCP_CLIENT) {
|| COMMAND_IS("start_tcp_receiver_thread") || COMMAND_IS("join_tcp_receiver_thread")
|| COMMAND_IS("start_bg_traffic_thread") || COMMAND_IS("join_bg_traffic_thread")
|| COMMAND_IS("setsockopt_keepalive") || COMMAND_IS("getsockopt_keepalive"))
&& info->type() != SInfo::TCP_CLIENT) {
cmd_printf("Not TCPSocket\r\n");
return CMDLINE_RETCODE_FAIL;
}
@ -919,7 +1046,7 @@ static int cmd_socket(int argc, char *argv[])
}
cmd_printf("Host name: %s port: %" PRId32 "\r\n", host, port);
return handle_nsapi_error("TCPSocket::connect()", static_cast<TCPSocket&>(info->socket()).connect(host, port));
return handle_nsapi_error("TCPSocket::connect()", static_cast<TCPSocket &>(info->socket()).connect(host, port));
} else if (COMMAND_IS("send")) {
return tcp_send_command_handler(info, argc, argv);
@ -945,7 +1072,7 @@ static int cmd_socket(int argc, char *argv[])
} else if (COMMAND_IS("join_bg_traffic_thread")) {
int bg_thread_success = CMDLINE_RETCODE_SUCCESS;
if( !info->available()) { // Tells that background thread stumbled to an issue and stopped prematurely
if (!info->available()) { // Tells that background thread stumbled to an issue and stopped prematurely
bg_thread_success = CMDLINE_RETCODE_FAIL;
}
@ -991,10 +1118,11 @@ static int cmd_socket(int argc, char *argv[])
}
if (COMMAND_IS("listen")) {
int32_t backlog;
if (cmd_parameter_int(argc, argv, "listen", &backlog))
return handle_nsapi_error("TCPServer::listen()", static_cast<TCPServer&>(info->socket()).listen(backlog));
else
return handle_nsapi_error("TCPServer::listen()", static_cast<TCPServer&>(info->socket()).listen());
if (cmd_parameter_int(argc, argv, "listen", &backlog)) {
return handle_nsapi_error("TCPServer::listen()", static_cast<TCPServer &>(info->socket()).listen(backlog));
} else {
return handle_nsapi_error("TCPServer::listen()", static_cast<TCPServer &>(info->socket()).listen());
}
} else if (COMMAND_IS("accept")) {
SocketAddress addr;
@ -1008,11 +1136,11 @@ static int cmd_socket(int argc, char *argv[])
cmd_printf("Invalid socket id\r\n");
return CMDLINE_RETCODE_FAIL;
}
TCPSocket *new_sock = static_cast<TCPSocket*>(&new_info->socket());
nsapi_error_t ret = static_cast<TCPServer&>(info->socket()).accept(new_sock, &addr);
TCPSocket *new_sock = static_cast<TCPSocket *>(&new_info->socket());
nsapi_error_t ret = static_cast<TCPServer &>(info->socket()).accept(new_sock, &addr);
if (ret == NSAPI_ERROR_OK) {
cmd_printf("TCPServer::accept() new socket sid: %d connection from %s port %d\r\n",
new_info->id(), addr.get_ip_address(), addr.get_port());
new_info->id(), addr.get_ip_address(), addr.get_port());
}
return handle_nsapi_error("TCPServer::accept()", ret);
}

View File

@ -37,7 +37,8 @@ void cmd_ready_cb(int retcode)
cmd_next(retcode);
}
void wrap_printf(const char *f, va_list a) {
void wrap_printf(const char *f, va_list a)
{
vprintf(f, a);
}
@ -48,13 +49,14 @@ int main()
cmd_socket_init();
int c;
while((c = getchar()) != EOF) {
while ((c = getchar()) != EOF) {
cmd_char_input(c);
}
return 0;
}
FileHandle* mbed::mbed_override_console(int) {
FileHandle *mbed::mbed_override_console(int)
{
static UARTSerial console(STDIO_UART_TX, STDIO_UART_RX, SERIAL_CONSOLE_BAUD_RATE);
#if CONSOLE_FLOWCONTROL == CONSOLE_FLOWCONTROL_RTS
console.set_flow_control(SerialBase::RTS, STDIO_UART_RTS, NC);

View File

@ -47,11 +47,11 @@ int hexstr_to_bytes_inplace(char *str)
return -1;
}
len = strlen(str);
if (len < 2 || (len+1)%3 != 0) {
if (len < 2 || (len + 1) % 3 != 0) {
return -1;
}
for (i = 0, j = 0; i < len; i += 3, ++j) {
str[j] = (char)strtol(str+i, 0, 16);
str[j] = (char)strtol(str + i, 0, 16);
}
return j;
}