Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: lib_Transmission_Serial_example 2022_TICE_Electrolyse lib_Transmission_TCP_example
Diff: lib_Transmission.cpp
- Revision:
- 25:01db56f04262
- Parent:
- 23:457f1242007d
- Child:
- 26:fe26375f733e
diff -r a925173e1143 -r 01db56f04262 lib_Transmission.cpp
--- a/lib_Transmission.cpp Tue Jun 29 14:56:54 2021 +0000
+++ b/lib_Transmission.cpp Tue Jul 06 13:12:27 2021 +0000
@@ -14,7 +14,7 @@
:_serial(serial), _usb(usb), _eth(eth), _processing(processing), _ethup(ethup), _caseIgnore(caseIgnore)
{
if(_serial) _serial->attach(callback(this, &Transmission::serial_event));
- _evenThread = new Thread(osPriorityNormal, TRANSMISSION_DEFAULT_THREAD_SIZE);
+ _evenThread = new Thread(osPriorityNormal, TRANSMISSION_THREAD_SIZE);
_evenThread->start(callback(&_queue, &EventQueue::dispatch_forever));
}
@@ -30,7 +30,7 @@
:_serial(serial), _usb(usb), _processing(processing), _caseIgnore(caseIgnore)
{
if(_serial) _serial->attach(callback(this, &Transmission::serial_event));
- _evenThread = new Thread(osPriorityNormal, TRANSMISSION_DEFAULT_THREAD_SIZE);
+ _evenThread = new Thread(osPriorityNormal, TRANSMISSION_THREAD_SIZE);
_evenThread->start(callback(&_queue, &EventQueue::dispatch_forever));
}
@@ -47,7 +47,7 @@
:_serial(serial), _eth(eth), _processing(processing), _ethup(ethup), _caseIgnore(caseIgnore)
{
if(_serial) _serial->attach(callback(this, &Transmission::serial_event));
- _evenThread = new Thread(osPriorityNormal, TRANSMISSION_DEFAULT_THREAD_SIZE);
+ _evenThread = new Thread(osPriorityNormal, TRANSMISSION_THREAD_SIZE);
_evenThread->start(callback(&_queue, &EventQueue::dispatch_forever));
}
@@ -62,7 +62,7 @@
:_serial(serial), _processing(processing), _caseIgnore(caseIgnore)
{
if(_serial) _serial->attach(callback(this, &Transmission::serial_event));
- _evenThread = new Thread(osPriorityNormal, TRANSMISSION_DEFAULT_THREAD_SIZE);
+ _evenThread = new Thread(osPriorityNormal, TRANSMISSION_THREAD_SIZE);
_evenThread->start(callback(&_queue, &EventQueue::dispatch_forever));
}
@@ -74,7 +74,7 @@
bool caseIgnore)
:_usb(usb), _eth(eth), _processing(processing), _ethup(ethup), _caseIgnore(caseIgnore)
{
- _evenThread = new Thread(osPriorityNormal, TRANSMISSION_DEFAULT_THREAD_SIZE);
+ _evenThread = new Thread(osPriorityNormal, TRANSMISSION_THREAD_SIZE);
_evenThread->start(callback(&_queue, &EventQueue::dispatch_forever));
}
@@ -85,7 +85,7 @@
bool caseIgnore)
:_eth(eth), _processing(processing), _ethup(ethup), _caseIgnore(caseIgnore)
{
- _evenThread = new Thread(osPriorityNormal, TRANSMISSION_DEFAULT_THREAD_SIZE);
+ _evenThread = new Thread(osPriorityNormal, TRANSMISSION_THREAD_SIZE);
_evenThread->start(callback(&_queue, &EventQueue::dispatch_forever));
}
@@ -98,7 +98,7 @@
string Transmission::ip(string ip)
{
- if(!_eth) return "0.0.0.0";
+ if(!_eth) return "0.0.0.0:0";
ostringstream address;
SocketAddress socket;
_eth->get_ip_address(&socket);
@@ -137,6 +137,19 @@
return _eth->get_mac_address()?_eth->get_mac_address():"00:00:00:00:00:00";
}
+string Transmission::client(void)
+{
+ if(message.status == BLUE_CLIENT)
+ {
+ SocketAddress peer;
+ _clientTCP->getpeername(&peer);
+ ostringstream ssend;
+ ssend << peer.get_ip_address() << ":" << peer.get_port();
+ return ssend.str();
+ }
+ return "0.0.0.0:0";
+}
+
bool Transmission::eth_connect(void)
{
if(!_eth) return false;
@@ -233,15 +246,15 @@
{
char caractere;
static uint16_t size = 0;
- static char buffer[TRANSMISSION_DEFAULT_BUFFER_SIZE] = {0};
+ static char buffer[TRANSMISSION_BUFFER_SIZE] = {0};
_serial->read(&caractere, 1);
- if((caractere == '\n') || (size == (TRANSMISSION_DEFAULT_BUFFER_SIZE-1)))
+ if((caractere == '\n') || (size == (TRANSMISSION_BUFFER_SIZE-1)))
{
buffer[size] = '\0';
size = 0;
if(_processing) _queue.call(this, &Transmission::preprocessing, buffer, SERIAL_DELIVERY);
}
- else if((caractere > 31) && (caractere < 127) && (size < (TRANSMISSION_DEFAULT_BUFFER_SIZE-1))) buffer[size++] = caractere;
+ else if((caractere > 31) && (caractere < 127) && (size < (TRANSMISSION_BUFFER_SIZE-1))) buffer[size++] = caractere;
}
Transmission::enum_trans_status Transmission::recv(void)
@@ -250,24 +263,24 @@
{
if(_usb->ready())
{
- uint8_t buffer[TRANSMISSION_DEFAULT_BUFFER_SIZE] = {0};
+ uint8_t buffer[TRANSMISSION_BUFFER_SIZE] = {0};
uint32_t ack = 0, size = 0;
do{
ack = NSAPI_ERROR_OK;
_usb->receive_nb(&buffer[size], 1, &ack); // un peu plus rapide sur les petits transferts
size += ack;
- }while((ack > NSAPI_ERROR_OK) && (size < TRANSMISSION_DEFAULT_BUFFER_SIZE-1) && (buffer[size-ack] != '\n'));
+ }while((ack > NSAPI_ERROR_OK) && (size < TRANSMISSION_BUFFER_SIZE-1) && (buffer[size-ack] != '\n'));
if(size && _processing) preprocessing((char *)buffer, USB_DELIVERY);
} else _usb->connect();
}
if(eth_connect() && (message.status == BLUE_CLIENT))
{
- char buffer[TRANSMISSION_DEFAULT_BUFFER_SIZE] = {0};
+ char buffer[TRANSMISSION_BUFFER_SIZE] = {0};
nsapi_error_t ack = 0, size = 0;
do{
- ack = _clientTCP->recv(&buffer[size], TRANSMISSION_DEFAULT_BUFFER_SIZE-size);
+ ack = _clientTCP->recv(&buffer[size], TRANSMISSION_BUFFER_SIZE-size);
if(ack > NSAPI_ERROR_OK) size += ack;
- }while((ack == 536) && (size < TRANSMISSION_DEFAULT_BUFFER_SIZE));
+ }while((ack == 536) && (size < TRANSMISSION_BUFFER_SIZE));
if(ack < NSAPI_ERROR_WOULD_BLOCK) eth_error("clientTCP_recv", ack);
if((ack == NSAPI_ERROR_OK) || (ack == NSAPI_ERROR_NO_CONNECTION))
{
@@ -391,7 +404,7 @@
uint32_t buffer[12] = { 0b11011, 0 }; // VN = 3 & Mode = 3
SocketAddress aSERVER(server, 123);
string sSERVER(server);
- if(sSERVER != TRANSMISSION_DEFAULT_NTP_SERVER) eth_error("eth_gethostbyname", _eth->gethostbyname(sSERVER.c_str(), &aSERVER));
+ if(sSERVER != TRANSMISSION_NTP_SERVER) eth_error("eth_gethostbyname", _eth->gethostbyname(sSERVER.c_str(), &aSERVER));
if(eth_error("clientNTP_send", clientNTP.sendto(aSERVER, (void*)buffer, sizeof(buffer))) > NSAPI_ERROR_OK)
{
if(eth_error("clientNTP_recv", clientNTP.recvfrom(NULL, (void*)buffer, sizeof(buffer))) > NSAPI_ERROR_OK)
@@ -412,14 +425,14 @@
{
#ifndef NDEBUG
ostringstream message;
- message << "\n" << source << "[" << code;
+ message << "\n" << source << "[" << code << "] ";
switch(code)
{
- case NSAPI_STATUS_LOCAL_UP: message << "] NSAPI_STATUS_LOCAL_UP < local IP address set >"; break;
- case NSAPI_STATUS_GLOBAL_UP: message << "] NSAPI_STATUS_GLOBAL_UP < global IP address set >"; break;
- case NSAPI_STATUS_DISCONNECTED: message << "] NSAPI_STATUS_DISCONNECTED < no connection to network >"; break;
- case NSAPI_STATUS_CONNECTING: message << "] NSAPI_STATUS_CONNECTING < connecting to network >"; break;
- case NSAPI_STATUS_ERROR_UNSUPPORTED: message << "] NSAPI_STATUS_ERROR_UNSUPPORTED < unsupported functionality >";break;
+ case NSAPI_STATUS_LOCAL_UP: message << "NSAPI_STATUS_LOCAL_UP < local IP address set >"; break;
+ case NSAPI_STATUS_GLOBAL_UP: message << "NSAPI_STATUS_GLOBAL_UP < global IP address set >"; break;
+ case NSAPI_STATUS_DISCONNECTED: message << "NSAPI_STATUS_DISCONNECTED < no connection to network >"; break;
+ case NSAPI_STATUS_CONNECTING: message << "NSAPI_STATUS_CONNECTING < connecting to network >"; break;
+ case NSAPI_STATUS_ERROR_UNSUPPORTED: message << "NSAPI_STATUS_ERROR_UNSUPPORTED < unsupported functionality >"; break;
}
_serial->write(message.str().c_str(), message.str().size());
#endif
@@ -430,31 +443,31 @@
{
#ifndef NDEBUG
ostringstream message;
- message << "\n" << source << "[" << code;
+ message << "\n" << source << "[" << code << "] ";
switch(code)
{
- case NSAPI_ERROR_OK: message << "] NSAPI_ERROR_OK < no error >"; break;
- case NSAPI_ERROR_WOULD_BLOCK: message << "] NSAPI_ERROR_WOULD_BLOCK < no data is not available but call is non-blocking >";break;
- case NSAPI_ERROR_UNSUPPORTED: message << "] NSAPI_ERROR_UNSUPPORTED < unsupported functionality >"; break;
- case NSAPI_ERROR_PARAMETER: message << "] NSAPI_ERROR_PARAMETER < invalid configuration >"; break;
- case NSAPI_ERROR_NO_CONNECTION: message << "] NSAPI_ERROR_NO_CONNECTION < not connected to a network >"; break;
- case NSAPI_ERROR_NO_SOCKET: message << "] NSAPI_ERROR_NO_SOCKET < socket not available for use >"; break;
- case NSAPI_ERROR_NO_ADDRESS: message << "] NSAPI_ERROR_NO_ADDRESS < IP address is not known >"; break;
- case NSAPI_ERROR_NO_MEMORY: message << "] NSAPI_ERROR_NO_MEMORY < memory resource not available >"; break;
- case NSAPI_ERROR_NO_SSID: message << "] NSAPI_ERROR_NO_SSID < ssid not found >"; break;
- case NSAPI_ERROR_DNS_FAILURE: message << "] NSAPI_ERROR_DNS_FAILURE < DNS failed to complete successfully >"; break;
- case NSAPI_ERROR_DHCP_FAILURE: message << "] NSAPI_ERROR_DHCP_FAILURE < DHCP failed to complete successfully >"; break;
- case NSAPI_ERROR_AUTH_FAILURE: message << "] NSAPI_ERROR_AUTH_FAILURE < connection to access point failed >"; break;
- case NSAPI_ERROR_DEVICE_ERROR: message << "] NSAPI_ERROR_DEVICE_ERROR < failure interfacing with the network processor >"; break;
- case NSAPI_ERROR_IN_PROGRESS: message << "] NSAPI_ERROR_IN_PROGRESS < operation (eg connect) in progress >"; break;
- case NSAPI_ERROR_ALREADY: message << "] NSAPI_ERROR_ALREADY < operation (eg connect) already in progress >"; break;
- case NSAPI_ERROR_IS_CONNECTED: message << "] NSAPI_ERROR_IS_CONNECTED < socket is already connected >"; break;
- case NSAPI_ERROR_CONNECTION_LOST: message << "] NSAPI_ERROR_CONNECTION_LOST < connection lost >"; break;
- case NSAPI_ERROR_CONNECTION_TIMEOUT: message << "] NSAPI_ERROR_CONNECTION_TIMEOUT < connection timed out >"; break;
- case NSAPI_ERROR_ADDRESS_IN_USE: message << "] NSAPI_ERROR_ADDRESS_IN_USE < Address already in use >"; break;
- case NSAPI_ERROR_TIMEOUT: message << "] NSAPI_ERROR_TIMEOUT < operation timed out >"; break;
- case NSAPI_ERROR_BUSY: message << "] NSAPI_ERROR_BUSY < device is busy and cannot accept new operation >"; break;
- default: message << "] NSAPI_ERROR < unknow code >"; break;
+ case NSAPI_ERROR_OK: message << "NSAPI_ERROR_OK < no error >"; break;
+ case NSAPI_ERROR_WOULD_BLOCK: message << "NSAPI_ERROR_WOULD_BLOCK < no data is not available but call is non-blocking >"; break;
+ case NSAPI_ERROR_UNSUPPORTED: message << "NSAPI_ERROR_UNSUPPORTED < unsupported functionality >"; break;
+ case NSAPI_ERROR_PARAMETER: message << "NSAPI_ERROR_PARAMETER < invalid configuration >"; break;
+ case NSAPI_ERROR_NO_CONNECTION: message << "NSAPI_ERROR_NO_CONNECTION < not connected to a network >"; break;
+ case NSAPI_ERROR_NO_SOCKET: message << "NSAPI_ERROR_NO_SOCKET < socket not available for use >"; break;
+ case NSAPI_ERROR_NO_ADDRESS: message << "NSAPI_ERROR_NO_ADDRESS < IP address is not known >"; break;
+ case NSAPI_ERROR_NO_MEMORY: message << "NSAPI_ERROR_NO_MEMORY < memory resource not available >"; break;
+ case NSAPI_ERROR_NO_SSID: message << "NSAPI_ERROR_NO_SSID < ssid not found >"; break;
+ case NSAPI_ERROR_DNS_FAILURE: message << "NSAPI_ERROR_DNS_FAILURE < DNS failed to complete successfully >"; break;
+ case NSAPI_ERROR_DHCP_FAILURE: message << "NSAPI_ERROR_DHCP_FAILURE < DHCP failed to complete successfully >"; break;
+ case NSAPI_ERROR_AUTH_FAILURE: message << "NSAPI_ERROR_AUTH_FAILURE < connection to access point failed >"; break;
+ case NSAPI_ERROR_DEVICE_ERROR: message << "NSAPI_ERROR_DEVICE_ERROR < failure interfacing with the network processor >"; break;
+ case NSAPI_ERROR_IN_PROGRESS: message << "NSAPI_ERROR_IN_PROGRESS < operation (eg connect) in progress >"; break;
+ case NSAPI_ERROR_ALREADY: message << "NSAPI_ERROR_ALREADY < operation (eg connect) already in progress >"; break;
+ case NSAPI_ERROR_IS_CONNECTED: message << "NSAPI_ERROR_IS_CONNECTED < socket is already connected >"; break;
+ case NSAPI_ERROR_CONNECTION_LOST: message << "NSAPI_ERROR_CONNECTION_LOST < connection lost >"; break;
+ case NSAPI_ERROR_CONNECTION_TIMEOUT: message << "NSAPI_ERROR_CONNECTION_TIMEOUT < connection timed out >"; break;
+ case NSAPI_ERROR_ADDRESS_IN_USE: message << "NSAPI_ERROR_ADDRESS_IN_USE < Address already in use >"; break;
+ case NSAPI_ERROR_TIMEOUT: message << "NSAPI_ERROR_TIMEOUT < operation timed out >"; break;
+ case NSAPI_ERROR_BUSY: message << "NSAPI_ERROR_BUSY < device is busy and cannot accept new operation >"; break;
+ default: message << "NSAPI_ERROR < unknow code >"; break;
}
if(code < NSAPI_ERROR_OK) _serial->write(message.str().c_str(), message.str().size());
#endif