mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #12265 from AriParkkila/cell-fea-refactor
Refactor unnecessary functions from cellular driverpull/12280/head
commit
ecf4d62dc5
|
|
@ -77,18 +77,10 @@ protected:
|
|||
class my_stack : public AT_CellularStack {
|
||||
public:
|
||||
my_stack(ATHandler &atHandler, AT_CellularDevice &device) : AT_CellularStack(atHandler, 1, IPV4_STACK, device) {}
|
||||
virtual int get_max_socket_count()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
virtual int get_max_packet_size()
|
||||
{
|
||||
return 200;
|
||||
}
|
||||
virtual bool is_protocol_supported(nsapi_protocol_t protocol)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
virtual nsapi_error_t socket_close_impl(int sock_id)
|
||||
{
|
||||
return NSAPI_ERROR_OK;
|
||||
|
|
|
|||
|
|
@ -257,13 +257,6 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_set_power_save_mode)
|
|||
EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == dev.set_power_save_mode(0));
|
||||
}
|
||||
|
||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_get_send_delay)
|
||||
{
|
||||
FileHandle_stub fh1;
|
||||
AT_CellularDevice dev(&fh1);
|
||||
EXPECT_TRUE(0 == dev.get_send_delay());
|
||||
}
|
||||
|
||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_create_delete_context)
|
||||
{
|
||||
FileHandle_stub fh1;
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
#include "ATHandler_stub.h"
|
||||
#include "SocketAddress.h"
|
||||
#include "CellularDevice_stub.h"
|
||||
#include "AT_CellularDevice_stub.h"
|
||||
#include "myCellularDevice.h"
|
||||
|
||||
using namespace mbed;
|
||||
|
|
@ -34,27 +35,15 @@ using namespace events;
|
|||
class MyStack : public AT_CellularStack {
|
||||
public:
|
||||
bool bool_value;
|
||||
bool max_sock_value;
|
||||
nsapi_error_t create_error;
|
||||
CellularSocket socket;
|
||||
|
||||
MyStack(ATHandler &atr, int cid, nsapi_ip_stack_t typ, AT_CellularDevice &device) : AT_CellularStack(atr, cid, typ, device)
|
||||
{
|
||||
bool_value = false;
|
||||
max_sock_value = 0;
|
||||
create_error = NSAPI_ERROR_OK;
|
||||
}
|
||||
|
||||
virtual int get_max_socket_count()
|
||||
{
|
||||
return max_sock_value;
|
||||
}
|
||||
|
||||
virtual bool is_protocol_supported(nsapi_protocol_t protocol)
|
||||
{
|
||||
return bool_value;
|
||||
}
|
||||
|
||||
virtual nsapi_error_t socket_close_impl(int sock_id)
|
||||
{
|
||||
return NSAPI_ERROR_OK;
|
||||
|
|
@ -207,19 +196,22 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_open)
|
|||
ATHandler at(&fh1, que, 0, ",");
|
||||
|
||||
MyStack st(at, 0, IPV6_STACK, *_dev);
|
||||
st.bool_value = false;
|
||||
AT_CellularDevice_stub::supported_bool = 0;
|
||||
AT_CellularDevice_stub::max_sock_value = 1;
|
||||
EXPECT_EQ(st.socket_open(NULL, NSAPI_TCP), NSAPI_ERROR_UNSUPPORTED);
|
||||
|
||||
st.bool_value = true;
|
||||
st.max_sock_value = 0;
|
||||
AT_CellularDevice_stub::supported_bool = 1;
|
||||
nsapi_socket_t sock = &st.socket;
|
||||
AT_CellularDevice_stub::max_sock_value = 0;
|
||||
EXPECT_EQ(st.socket_open(&sock, NSAPI_TCP), NSAPI_ERROR_NO_SOCKET);
|
||||
|
||||
MyStack st2(at, 0, IPV6_STACK, *_dev);
|
||||
st2.bool_value = true;
|
||||
st2.max_sock_value = 1;
|
||||
AT_CellularDevice_stub::max_sock_value = 1;
|
||||
sock = &st2.socket;
|
||||
EXPECT_EQ(st2.socket_open(&sock, NSAPI_TCP), NSAPI_ERROR_OK);
|
||||
|
||||
AT_CellularDevice_stub::max_sock_value = 1; // value must be the same as before the first open
|
||||
}
|
||||
|
||||
TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_close)
|
||||
|
|
@ -233,13 +225,13 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_close)
|
|||
|
||||
nsapi_socket_t sock = &st.socket;
|
||||
st.bool_value = true;
|
||||
st.max_sock_value = 1;
|
||||
AT_CellularDevice_stub::max_sock_value = 1;
|
||||
EXPECT_EQ(st.socket_open(&sock, NSAPI_TCP), NSAPI_ERROR_OK);
|
||||
st.max_sock_value = 0;
|
||||
AT_CellularDevice_stub::max_sock_value = 0;
|
||||
EXPECT_EQ(st.socket_close(sock), NSAPI_ERROR_DEVICE_ERROR);
|
||||
|
||||
MyStack st2(at, 0, IPV6_STACK, *_dev);
|
||||
st2.max_sock_value = 1;
|
||||
AT_CellularDevice_stub::max_sock_value = 1;
|
||||
st2.bool_value = true;
|
||||
sock = &st2.socket;
|
||||
EXPECT_EQ(st2.socket_open(&sock, NSAPI_TCP), NSAPI_ERROR_OK);
|
||||
|
|
@ -306,7 +298,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_send)
|
|||
EXPECT_EQ(st.socket_send(&st.socket, "addr", 4), NSAPI_ERROR_NO_CONNECTION);
|
||||
|
||||
SocketAddress addr("fc00::", 123);
|
||||
st.max_sock_value = 1;
|
||||
AT_CellularDevice_stub::max_sock_value = 1;
|
||||
st.bool_value = true;
|
||||
nsapi_socket_t sock = &st.socket;
|
||||
st.socket_open(&sock, NSAPI_TCP);
|
||||
|
|
@ -325,7 +317,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_sendto)
|
|||
SocketAddress addr("fc00::", 123);
|
||||
EXPECT_EQ(st.socket_sendto(NULL, addr, "addr", 4), NSAPI_ERROR_NO_SOCKET);
|
||||
|
||||
st.max_sock_value = 1;
|
||||
AT_CellularDevice_stub::max_sock_value = 1;
|
||||
st.bool_value = true;
|
||||
nsapi_socket_t sock = &st.socket;
|
||||
st.socket_open(&sock, NSAPI_TCP);
|
||||
|
|
@ -359,7 +351,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_recvfrom)
|
|||
EXPECT_EQ(st.socket_recvfrom(NULL, NULL, table, 4), NSAPI_ERROR_NO_SOCKET);
|
||||
|
||||
SocketAddress addr;
|
||||
st.max_sock_value = 1;
|
||||
AT_CellularDevice_stub::max_sock_value = 1;
|
||||
st.bool_value = true;
|
||||
nsapi_socket_t sock = &st.socket;
|
||||
st.socket_open(&sock, NSAPI_TCP);
|
||||
|
|
@ -380,7 +372,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_attach)
|
|||
MyStack st(at, 0, IPV6_STACK, *_dev);
|
||||
|
||||
st.socket_attach(NULL, NULL, NULL);
|
||||
st.max_sock_value = 1;
|
||||
AT_CellularDevice_stub::max_sock_value = 1;
|
||||
st.bool_value = true;
|
||||
nsapi_socket_t sock = &st.socket;
|
||||
st.socket_open(&sock, NSAPI_TCP);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ int AT_CellularDevice_stub::set_pin_failure_count = 0;
|
|||
int AT_CellularDevice_stub::get_sim_failure_count = 0;
|
||||
bool AT_CellularDevice_stub::pin_needed = false;
|
||||
bool AT_CellularDevice_stub::supported_bool = false;
|
||||
int AT_CellularDevice_stub::max_sock_value = 0;
|
||||
|
||||
AT_CellularDevice::AT_CellularDevice(FileHandle *fh) : CellularDevice(fh),
|
||||
#if MBED_CONF_CELLULAR_USE_SMS
|
||||
|
|
@ -48,7 +49,7 @@ AT_CellularDevice::~AT_CellularDevice()
|
|||
|
||||
ATHandler *AT_CellularDevice::get_at_handler(FileHandle *fileHandle)
|
||||
{
|
||||
return ATHandler::get_instance(fileHandle, _queue, _default_timeout, "\r", get_send_delay(), _modem_debug_on);
|
||||
return ATHandler::get_instance(fileHandle, _queue, _default_timeout, "\r", get_property(AT_CellularDevice::PROPERTY_AT_SEND_DELAY), _modem_debug_on);
|
||||
}
|
||||
|
||||
ATHandler *AT_CellularDevice::get_at_handler()
|
||||
|
|
@ -87,7 +88,7 @@ CellularNetwork *AT_CellularDevice::open_network(FileHandle *fh)
|
|||
_queue,
|
||||
_default_timeout,
|
||||
"\r",
|
||||
get_send_delay(),
|
||||
get_property(AT_CellularDevice::PROPERTY_AT_SEND_DELAY),
|
||||
_modem_debug_on), *this);
|
||||
return _network;
|
||||
}
|
||||
|
|
@ -163,11 +164,6 @@ void AT_CellularDevice::set_timeout(int timeout)
|
|||
_default_timeout = timeout;
|
||||
}
|
||||
|
||||
uint16_t AT_CellularDevice::get_send_delay() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void AT_CellularDevice::modem_debug_on(bool on)
|
||||
{
|
||||
_modem_debug_on = on;
|
||||
|
|
@ -293,6 +289,8 @@ intptr_t AT_CellularDevice::get_property(CellularProperty key)
|
|||
return true;
|
||||
} else if (key == PROPERTY_IPV4_PDP_TYPE) {
|
||||
return true;
|
||||
} else if (key == PROPERTY_SOCKET_COUNT) {
|
||||
return AT_CellularDevice_stub::max_sock_value;
|
||||
}
|
||||
|
||||
return AT_CellularDevice_stub::supported_bool;
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ extern int set_pin_failure_count;
|
|||
extern int get_sim_failure_count;
|
||||
extern bool pin_needed;
|
||||
extern bool supported_bool;
|
||||
extern int max_sock_value;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -115,11 +115,6 @@ public:
|
|||
|
||||
virtual void set_timeout(int timeout) {}
|
||||
|
||||
virtual uint16_t get_send_delay() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual void modem_debug_on(bool on) {}
|
||||
|
||||
virtual nsapi_error_t init()
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ void AT_CellularDevice::setup_at_handler()
|
|||
{
|
||||
set_at_urcs();
|
||||
|
||||
_at->set_send_delay(get_send_delay());
|
||||
_at->set_send_delay(get_property(AT_CellularDevice::PROPERTY_AT_SEND_DELAY));
|
||||
}
|
||||
|
||||
void AT_CellularDevice::urc_nw_deact()
|
||||
|
|
@ -188,7 +188,7 @@ ATHandler *AT_CellularDevice::get_at_handler(FileHandle *fileHandle)
|
|||
}
|
||||
|
||||
return ATHandler::get_instance(fileHandle, _queue, _default_timeout,
|
||||
"\r", get_send_delay(), _modem_debug_on);
|
||||
"\r", get_property(AT_CellularDevice::PROPERTY_AT_SEND_DELAY), _modem_debug_on);
|
||||
}
|
||||
|
||||
ATHandler *AT_CellularDevice::get_at_handler()
|
||||
|
|
@ -445,11 +445,6 @@ void AT_CellularDevice::set_timeout(int timeout)
|
|||
}
|
||||
}
|
||||
|
||||
uint16_t AT_CellularDevice::get_send_delay() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void AT_CellularDevice::modem_debug_on(bool on)
|
||||
{
|
||||
_modem_debug_on = on;
|
||||
|
|
|
|||
|
|
@ -58,7 +58,10 @@ public:
|
|||
PROPERTY_NON_IP_PDP_TYPE, // 0 = not supported, 1 = supported. Does modem support Non-IP?
|
||||
PROPERTY_AT_CGEREP, // 0 = not supported, 1 = supported. Does modem support AT command AT+CGEREP.
|
||||
PROPERTY_AT_COPS_FALLBACK_AUTO, // 0 = not supported, 1 = supported. Does modem support mode 4 of AT+COPS= ?
|
||||
|
||||
PROPERTY_SOCKET_COUNT, // The number of sockets of modem IP stack
|
||||
PROPERTY_IP_TCP, // 0 = not supported, 1 = supported. Modem IP stack has support for TCP
|
||||
PROPERTY_IP_UDP, // 0 = not supported, 1 = supported. Modem IP stack has support for TCP
|
||||
PROPERTY_AT_SEND_DELAY, // Sending delay between AT commands in ms
|
||||
PROPERTY_MAX
|
||||
};
|
||||
|
||||
|
|
@ -98,8 +101,6 @@ public:
|
|||
|
||||
virtual void set_timeout(int timeout);
|
||||
|
||||
virtual uint16_t get_send_delay() const;
|
||||
|
||||
virtual void modem_debug_on(bool on);
|
||||
|
||||
virtual nsapi_error_t init();
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ using namespace mbed_cellular_util;
|
|||
using namespace mbed;
|
||||
|
||||
AT_CellularStack::AT_CellularStack(ATHandler &at, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device) :
|
||||
_socket(NULL), _socket_count(0), _cid(cid),
|
||||
_socket(NULL), _cid(cid),
|
||||
_stack_type(stack_type), _ip_ver_sendto(NSAPI_UNSPEC), _at(at), _device(device)
|
||||
{
|
||||
memset(_ip, 0, PDP_IPV6_SIZE);
|
||||
|
|
@ -33,22 +33,24 @@ AT_CellularStack::AT_CellularStack(ATHandler &at, int cid, nsapi_ip_stack_t stac
|
|||
|
||||
AT_CellularStack::~AT_CellularStack()
|
||||
{
|
||||
for (int i = 0; i < _socket_count; i++) {
|
||||
if (_socket[i]) {
|
||||
delete _socket[i];
|
||||
_socket[i] = NULL;
|
||||
if (_socket) {
|
||||
for (int i = 0; i < _device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT); i++) {
|
||||
if (_socket[i]) {
|
||||
delete _socket[i];
|
||||
_socket[i] = NULL;
|
||||
}
|
||||
}
|
||||
delete [] _socket;
|
||||
_socket = NULL;
|
||||
}
|
||||
_socket_count = 0;
|
||||
|
||||
delete [] _socket;
|
||||
_socket = NULL;
|
||||
}
|
||||
|
||||
int AT_CellularStack::find_socket_index(nsapi_socket_t handle)
|
||||
{
|
||||
int max_socket_count = get_max_socket_count();
|
||||
for (int i = 0; i < max_socket_count; i++) {
|
||||
if (!_socket) {
|
||||
return -1;
|
||||
}
|
||||
for (int i = 0; i < _device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT); i++) {
|
||||
if (_socket[i] == handle) {
|
||||
return i;
|
||||
}
|
||||
|
|
@ -158,23 +160,36 @@ nsapi_error_t AT_CellularStack::socket_stack_init()
|
|||
|
||||
nsapi_error_t AT_CellularStack::socket_open(nsapi_socket_t *handle, nsapi_protocol_t proto)
|
||||
{
|
||||
if (!is_protocol_supported(proto) || !handle) {
|
||||
if (!handle) {
|
||||
return NSAPI_ERROR_UNSUPPORTED;
|
||||
}
|
||||
|
||||
int max_socket_count = get_max_socket_count();
|
||||
if (proto == NSAPI_UDP) {
|
||||
if (!_device.get_property(AT_CellularDevice::PROPERTY_IP_UDP)) {
|
||||
return NSAPI_ERROR_UNSUPPORTED;
|
||||
}
|
||||
} else if (proto == NSAPI_TCP) {
|
||||
if (!_device.get_property(AT_CellularDevice::PROPERTY_IP_TCP)) {
|
||||
return NSAPI_ERROR_UNSUPPORTED;
|
||||
}
|
||||
} else {
|
||||
return NSAPI_ERROR_UNSUPPORTED;
|
||||
}
|
||||
|
||||
_socket_mutex.lock();
|
||||
|
||||
if (!_socket) {
|
||||
if (_device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT) == 0) {
|
||||
_socket_mutex.unlock();
|
||||
return NSAPI_ERROR_NO_SOCKET;
|
||||
}
|
||||
if (socket_stack_init() != NSAPI_ERROR_OK) {
|
||||
_socket_mutex.unlock();
|
||||
return NSAPI_ERROR_NO_SOCKET;
|
||||
}
|
||||
|
||||
_socket = new CellularSocket*[max_socket_count];
|
||||
_socket_count = max_socket_count;
|
||||
for (int i = 0; i < max_socket_count; i++) {
|
||||
_socket = new CellularSocket*[_device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT)];
|
||||
for (int i = 0; i < _device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT); i++) {
|
||||
_socket[i] = 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -435,8 +450,7 @@ void AT_CellularStack::socket_attach(nsapi_socket_t handle, void (*callback)(voi
|
|||
|
||||
int AT_CellularStack::get_socket_index_by_port(uint16_t port)
|
||||
{
|
||||
int max_socket_count = get_max_socket_count();
|
||||
for (int i = 0; i < max_socket_count; i++) {
|
||||
for (int i = 0; i < _device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT); i++) {
|
||||
if (_socket[i]->localAddress.get_port() == port) {
|
||||
return i;
|
||||
}
|
||||
|
|
@ -447,7 +461,7 @@ int AT_CellularStack::get_socket_index_by_port(uint16_t port)
|
|||
AT_CellularStack::CellularSocket *AT_CellularStack::find_socket(int sock_id)
|
||||
{
|
||||
CellularSocket *sock = NULL;
|
||||
for (int i = 0; i < _socket_count; i++) {
|
||||
for (int i = 0; i < _device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT); i++) {
|
||||
if (_socket[i] && _socket[i]->id == sock_id) {
|
||||
sock = _socket[i];
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -135,18 +135,6 @@ protected:
|
|||
bool txfull_event; // socket event after wouldblock
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets maximum number of sockets modem supports
|
||||
*/
|
||||
virtual int get_max_socket_count() = 0;
|
||||
|
||||
/**
|
||||
* Checks if modem supports the given protocol
|
||||
*
|
||||
* @param protocol Protocol type
|
||||
*/
|
||||
virtual bool is_protocol_supported(nsapi_protocol_t protocol) = 0;
|
||||
|
||||
/**
|
||||
* Implements modem specific AT command set for socket closing
|
||||
*
|
||||
|
|
@ -218,9 +206,6 @@ protected:
|
|||
// socket container
|
||||
CellularSocket **_socket;
|
||||
|
||||
// number of socket slots allocated in socket container
|
||||
int _socket_count;
|
||||
|
||||
// IP address
|
||||
char _ip[PDP_IPV6_SIZE];
|
||||
|
||||
|
|
|
|||
|
|
@ -24,8 +24,6 @@
|
|||
using namespace mbed;
|
||||
using namespace events;
|
||||
|
||||
const uint16_t RESPONSE_TO_SEND_DELAY = 100; // response-to-send delay in milliseconds at bit-rate over 9600
|
||||
|
||||
GEMALTO_CINTERION::Module GEMALTO_CINTERION::_module;
|
||||
|
||||
GEMALTO_CINTERION::GEMALTO_CINTERION(FileHandle *fh) : AT_CellularDevice(fh)
|
||||
|
|
@ -83,11 +81,6 @@ nsapi_error_t GEMALTO_CINTERION::init()
|
|||
return NSAPI_ERROR_OK;
|
||||
}
|
||||
|
||||
uint16_t GEMALTO_CINTERION::get_send_delay() const
|
||||
{
|
||||
return RESPONSE_TO_SEND_DELAY;
|
||||
}
|
||||
|
||||
GEMALTO_CINTERION::Module GEMALTO_CINTERION::get_module()
|
||||
{
|
||||
return _module;
|
||||
|
|
@ -113,6 +106,10 @@ void GEMALTO_CINTERION::init_module_bgs2()
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
10, // PROPERTY_SOCKET_COUNT
|
||||
1, // PROPERTY_IP_TCP
|
||||
1, // PROPERTY_IP_UDP
|
||||
100,// PROPERTY_AT_SEND_DELAY, if baud is below 9600 this must be longer
|
||||
};
|
||||
set_cellular_properties(cellular_properties);
|
||||
_module = ModuleBGS2;
|
||||
|
|
@ -138,6 +135,10 @@ void GEMALTO_CINTERION::init_module_els61()
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
10, // PROPERTY_SOCKET_COUNT
|
||||
1, // PROPERTY_IP_TCP
|
||||
1, // PROPERTY_IP_UDP
|
||||
100,// PROPERTY_AT_SEND_DELAY, if baud is below 9600 this must be longer
|
||||
};
|
||||
set_cellular_properties(cellular_properties);
|
||||
_module = ModuleELS61;
|
||||
|
|
@ -163,6 +164,10 @@ void GEMALTO_CINTERION::init_module_ems31()
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
10, // PROPERTY_SOCKET_COUNT
|
||||
1, // PROPERTY_IP_TCP
|
||||
1, // PROPERTY_IP_UDP
|
||||
100,// PROPERTY_AT_SEND_DELAY, if baud is below 9600 this must be longer
|
||||
};
|
||||
set_cellular_properties(cellular_properties);
|
||||
_module = ModuleEMS31;
|
||||
|
|
@ -188,6 +193,10 @@ void GEMALTO_CINTERION::init_module_ehs5e()
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
10, // PROPERTY_SOCKET_COUNT
|
||||
1, // PROPERTY_IP_TCP
|
||||
1, // PROPERTY_IP_UDP
|
||||
100,// PROPERTY_AT_SEND_DELAY, if baud is below 9600 this must be longer
|
||||
};
|
||||
set_cellular_properties(cellular_properties);
|
||||
_module = ModuleEHS5E;
|
||||
|
|
|
|||
|
|
@ -52,7 +52,6 @@ protected: // AT_CellularDevice
|
|||
virtual AT_CellularInformation *open_information_impl(ATHandler &at);
|
||||
|
||||
protected:
|
||||
virtual uint16_t get_send_delay() const;
|
||||
virtual nsapi_error_t init();
|
||||
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@
|
|||
#include "CellularLog.h"
|
||||
|
||||
// defines as per ELS61-E2_ATC_V01.000 and BGS2-W_ATC_V00.100
|
||||
#define SOCKET_MAX 10
|
||||
#define UDP_PACKET_SIZE 1460
|
||||
#define FAILURE_TIMEOUT (30*1000) // failure timeout in milliseconds on modem side
|
||||
|
||||
|
|
@ -122,7 +121,7 @@ nsapi_error_t GEMALTO_CINTERION_CellularStack::socket_stack_init()
|
|||
_at.set_urc_handler("^SISR:", mbed::Callback<void()>(this, &GEMALTO_CINTERION_CellularStack::urc_sisr));
|
||||
} else { // recovery cleanup
|
||||
// close all Internet and connection profiles
|
||||
for (int i = 0; i < SOCKET_MAX; i++) {
|
||||
for (int i = 0; i < _device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT); i++) {
|
||||
_at.clear_error();
|
||||
socket_close_impl(i);
|
||||
}
|
||||
|
|
@ -133,16 +132,6 @@ nsapi_error_t GEMALTO_CINTERION_CellularStack::socket_stack_init()
|
|||
return err;
|
||||
}
|
||||
|
||||
int GEMALTO_CINTERION_CellularStack::get_max_socket_count()
|
||||
{
|
||||
return SOCKET_MAX;
|
||||
}
|
||||
|
||||
bool GEMALTO_CINTERION_CellularStack::is_protocol_supported(nsapi_protocol_t protocol)
|
||||
{
|
||||
return (protocol == NSAPI_UDP || protocol == NSAPI_TCP);
|
||||
}
|
||||
|
||||
nsapi_error_t GEMALTO_CINTERION_CellularStack::socket_close_impl(int sock_id)
|
||||
{
|
||||
tr_debug("Cinterion close %d", sock_id);
|
||||
|
|
|
|||
|
|
@ -32,10 +32,6 @@ protected:
|
|||
|
||||
virtual nsapi_error_t socket_stack_init();
|
||||
|
||||
virtual int get_max_socket_count();
|
||||
|
||||
virtual bool is_protocol_supported(nsapi_protocol_t protocol);
|
||||
|
||||
virtual nsapi_error_t socket_close_impl(int sock_id);
|
||||
|
||||
virtual nsapi_error_t create_socket_impl(CellularSocket *socket);
|
||||
|
|
|
|||
|
|
@ -38,6 +38,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
0, // PROPERTY_SOCKET_COUNT
|
||||
0, // PROPERTY_IP_TCP
|
||||
0, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
|
||||
GENERIC_AT3GPP::GENERIC_AT3GPP(FileHandle *fh) : AT_CellularDevice(fh)
|
||||
|
|
|
|||
|
|
@ -38,6 +38,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
0, // PROPERTY_SOCKET_COUNT
|
||||
0, // PROPERTY_IP_TCP
|
||||
0, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
|
||||
SARA4_PPP::SARA4_PPP(FileHandle *fh) : AT_CellularDevice(fh)
|
||||
|
|
|
|||
|
|
@ -45,6 +45,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
1, // PROPERTY_NON_IP_PDP_TYPE
|
||||
0, // PROPERTY_AT_CGEREP,
|
||||
0, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
7, // PROPERTY_SOCKET_COUNT
|
||||
1, // PROPERTY_IP_TCP
|
||||
1, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
|
||||
QUECTEL_BC95::QUECTEL_BC95(FileHandle *fh) : AT_CellularDevice(fh)
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ void QUECTEL_BC95_CellularStack::urc_nsonmi()
|
|||
{
|
||||
int sock_id = _at.read_int();
|
||||
|
||||
for (int i = 0; i < get_max_socket_count(); i++) {
|
||||
for (int i = 0; i < _device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT); i++) {
|
||||
CellularSocket *sock = _socket[i];
|
||||
if (sock && sock->id == sock_id) {
|
||||
if (sock->_cb) {
|
||||
|
|
@ -128,16 +128,6 @@ void QUECTEL_BC95_CellularStack::urc_nsocli()
|
|||
}
|
||||
|
||||
|
||||
int QUECTEL_BC95_CellularStack::get_max_socket_count()
|
||||
{
|
||||
return BC95_SOCKET_MAX;
|
||||
}
|
||||
|
||||
bool QUECTEL_BC95_CellularStack::is_protocol_supported(nsapi_protocol_t protocol)
|
||||
{
|
||||
return (protocol == NSAPI_UDP || protocol == NSAPI_TCP);
|
||||
}
|
||||
|
||||
nsapi_error_t QUECTEL_BC95_CellularStack::socket_close_impl(int sock_id)
|
||||
{
|
||||
CellularSocket *sock = find_socket(sock_id);
|
||||
|
|
@ -308,7 +298,7 @@ void QUECTEL_BC95_CellularStack::txfull_event_timeout()
|
|||
{
|
||||
_socket_mutex.lock();
|
||||
_txfull_event_id = 0;
|
||||
for (int i = 0; i < get_max_socket_count(); i++) {
|
||||
for (int i = 0; i < _device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT); i++) {
|
||||
CellularSocket *sock = _socket[i];
|
||||
if (sock && sock->_cb && sock->txfull_event) {
|
||||
sock->txfull_event = false;
|
||||
|
|
|
|||
|
|
@ -20,8 +20,6 @@
|
|||
|
||||
#include "AT_CellularStack.h"
|
||||
|
||||
#define BC95_SOCKET_MAX 7
|
||||
|
||||
namespace mbed {
|
||||
|
||||
class QUECTEL_BC95_CellularStack : public AT_CellularStack {
|
||||
|
|
@ -40,10 +38,6 @@ protected: // NetworkStack
|
|||
|
||||
protected: // AT_CellularStack
|
||||
|
||||
virtual int get_max_socket_count();
|
||||
|
||||
virtual bool is_protocol_supported(nsapi_protocol_t protocol);
|
||||
|
||||
virtual nsapi_error_t socket_close_impl(int sock_id);
|
||||
|
||||
virtual nsapi_error_t create_socket_impl(CellularSocket *socket);
|
||||
|
|
|
|||
|
|
@ -62,6 +62,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
1, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP,
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
12, // PROPERTY_SOCKET_COUNT
|
||||
1, // PROPERTY_IP_TCP
|
||||
1, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
|
||||
QUECTEL_BG96::QUECTEL_BG96(FileHandle *fh, PinName pwr, bool active_high, PinName rst)
|
||||
|
|
|
|||
|
|
@ -222,16 +222,6 @@ void QUECTEL_BG96_CellularStack::urc_qiurc(urc_type_t urc_type)
|
|||
}
|
||||
}
|
||||
|
||||
int QUECTEL_BG96_CellularStack::get_max_socket_count()
|
||||
{
|
||||
return BG96_SOCKET_MAX;
|
||||
}
|
||||
|
||||
bool QUECTEL_BG96_CellularStack::is_protocol_supported(nsapi_protocol_t protocol)
|
||||
{
|
||||
return (protocol == NSAPI_UDP || protocol == NSAPI_TCP);
|
||||
}
|
||||
|
||||
nsapi_error_t QUECTEL_BG96_CellularStack::socket_close_impl(int sock_id)
|
||||
{
|
||||
_at.set_at_timeout(BG96_CLOSE_SOCKET_TIMEOUT);
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@
|
|||
|
||||
namespace mbed {
|
||||
|
||||
#define BG96_SOCKET_MAX 12
|
||||
#define BG96_CREATE_SOCKET_TIMEOUT 150000 //150 seconds
|
||||
#define BG96_CLOSE_SOCKET_TIMEOUT 20000 // TCP socket max timeout is >10sec
|
||||
#define BG96_MAX_RECV_SIZE 1500
|
||||
|
|
@ -60,10 +59,6 @@ protected: // NetworkStack
|
|||
|
||||
protected: // AT_CellularStack
|
||||
|
||||
virtual int get_max_socket_count();
|
||||
|
||||
virtual bool is_protocol_supported(nsapi_protocol_t protocol);
|
||||
|
||||
virtual nsapi_error_t socket_close_impl(int sock_id);
|
||||
|
||||
virtual nsapi_error_t create_socket_impl(CellularSocket *socket);
|
||||
|
|
|
|||
|
|
@ -63,6 +63,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP,
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
0, // PROPERTY_SOCKET_COUNT
|
||||
0, // PROPERTY_IP_TCP
|
||||
0, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
|
||||
QUECTEL_EC2X::QUECTEL_EC2X(FileHandle *fh, PinName pwr, bool active_high, PinName rst)
|
||||
|
|
|
|||
|
|
@ -41,6 +41,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
6, // PROPERTY_SOCKET_COUNT
|
||||
1, // PROPERTY_IP_TCP
|
||||
1, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
|
||||
QUECTEL_M26::QUECTEL_M26(FileHandle *fh) : AT_CellularDevice(fh)
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ void QUECTEL_M26_CellularStack::urc_qiurc()
|
|||
(void) _at.skip_param(); /*<tlen>*/
|
||||
_at.unlock();
|
||||
|
||||
for (int i = 0; i < get_max_socket_count(); i++) {
|
||||
for (int i = 0; i < _device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT); i++) {
|
||||
CellularSocket *sock = _socket[i];
|
||||
if (sock && sock->id == sock_id) {
|
||||
if (sock->_cb) {
|
||||
|
|
@ -217,16 +217,6 @@ nsapi_error_t QUECTEL_M26_CellularStack::socket_stack_init()
|
|||
return NSAPI_ERROR_OK;
|
||||
}
|
||||
|
||||
int QUECTEL_M26_CellularStack::get_max_socket_count()
|
||||
{
|
||||
return M26_SOCKET_MAX;
|
||||
}
|
||||
|
||||
bool QUECTEL_M26_CellularStack::is_protocol_supported(nsapi_protocol_t protocol)
|
||||
{
|
||||
return (protocol == NSAPI_UDP || protocol == NSAPI_TCP);
|
||||
}
|
||||
|
||||
nsapi_error_t QUECTEL_M26_CellularStack::socket_close_impl(int sock_id)
|
||||
{
|
||||
tr_debug("QUECTEL_M26_CellularStack:%s:%u:", __FUNCTION__, __LINE__);
|
||||
|
|
@ -328,7 +318,7 @@ nsapi_error_t QUECTEL_M26_CellularStack::create_socket_impl(CellularSocket *sock
|
|||
int potential_sid = -1;
|
||||
int index = find_socket_index(socket);
|
||||
|
||||
for (int i = 0; i < get_max_socket_count(); i++) {
|
||||
for (int i = 0; i < _device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT); i++) {
|
||||
CellularSocket *sock = _socket[i];
|
||||
if (sock && sock != socket && sock->id == index) {
|
||||
duplicate = true;
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@
|
|||
|
||||
namespace mbed {
|
||||
|
||||
#define M26_SOCKET_MAX 6
|
||||
#define M26_CREATE_SOCKET_TIMEOUT 75000 //75 seconds
|
||||
#define M26_SENT_BYTE_MAX 1460
|
||||
#define M26_RECV_BYTE_MAX 1024
|
||||
|
|
@ -47,10 +46,6 @@ protected: // AT_CellularStack
|
|||
|
||||
virtual nsapi_error_t socket_stack_init();
|
||||
|
||||
virtual int get_max_socket_count();
|
||||
|
||||
virtual bool is_protocol_supported(nsapi_protocol_t protocol);
|
||||
|
||||
virtual nsapi_error_t socket_close_impl(int sock_id);
|
||||
|
||||
virtual nsapi_error_t create_socket_impl(CellularSocket *socket);
|
||||
|
|
|
|||
|
|
@ -43,6 +43,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP,
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
0, // PROPERTY_SOCKET_COUNT
|
||||
0, // PROPERTY_IP_TCP
|
||||
0, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
|
||||
QUECTEL_UG96::QUECTEL_UG96(FileHandle *fh) : AT_CellularDevice(fh)
|
||||
|
|
|
|||
|
|
@ -45,6 +45,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
0, // PROPERTY_AT_CGEREP
|
||||
0, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
7, // PROPERTY_SOCKET_COUNT
|
||||
1, // PROPERTY_IP_TCP
|
||||
1, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
|
||||
RM1000_AT::RM1000_AT(FileHandle *fh) : AT_CellularDevice(fh)
|
||||
|
|
|
|||
|
|
@ -87,17 +87,6 @@ void RM1000_AT_CellularStack::RUSOCL_URC()
|
|||
clear_socket(socket);
|
||||
}
|
||||
|
||||
int RM1000_AT_CellularStack::get_max_socket_count()
|
||||
{
|
||||
tr_debug("RM1000_AT_CellularStack::get_max_socket_count");
|
||||
return RM1000_MAX_SOCKET;
|
||||
}
|
||||
|
||||
bool RM1000_AT_CellularStack::is_protocol_supported(nsapi_protocol_t protocol)
|
||||
{
|
||||
return (protocol == NSAPI_UDP || protocol == NSAPI_TCP);
|
||||
}
|
||||
|
||||
nsapi_error_t RM1000_AT_CellularStack::create_socket_impl(CellularSocket *socket)
|
||||
{
|
||||
tr_debug("RM1000_AT_CellularStack::create_socket_impl");
|
||||
|
|
@ -109,7 +98,7 @@ nsapi_error_t RM1000_AT_CellularStack::create_socket_impl(CellularSocket *socket
|
|||
err = _at.at_cmd_int("+RSOCR", "=0", sock_id);
|
||||
} else if (socket->proto == NSAPI_TCP) {
|
||||
err = _at.at_cmd_int("+RSOCR", "=1", sock_id);
|
||||
} // Unsupported protocol is checked in "is_protocol_supported" function
|
||||
} // Unsupported protocol is checked in socket_open()
|
||||
|
||||
if ((err != NSAPI_ERROR_OK) || (sock_id == -1)) {
|
||||
tr_error("RM1000_AT_CellularStack::create_socket_impl error sock_id=%d err=%d", sock_id, err);
|
||||
|
|
@ -117,7 +106,7 @@ nsapi_error_t RM1000_AT_CellularStack::create_socket_impl(CellularSocket *socket
|
|||
}
|
||||
|
||||
// Check for duplicate socket id delivered by modem
|
||||
for (int i = 0; i < RM1000_MAX_SOCKET; i++) {
|
||||
for (int i = 0; i < _device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT); i++) {
|
||||
CellularSocket *sock = _socket[i];
|
||||
if (sock && sock != socket && sock->id == sock_id) {
|
||||
return NSAPI_ERROR_NO_SOCKET;
|
||||
|
|
|
|||
|
|
@ -56,19 +56,11 @@ protected: // AT_CellularStack
|
|||
*/
|
||||
static const int SOCKET_TIMEOUT = 1000;
|
||||
|
||||
/** Maximum allowed sockets.
|
||||
*/
|
||||
static const int RM1000_MAX_SOCKET = 7;
|
||||
|
||||
/** The maximum number of bytes in a packet that can be write/read from
|
||||
* the AT interface in one go.
|
||||
*/
|
||||
static const int RM1000_MAX_PACKET_SIZE = 1024;
|
||||
|
||||
virtual int get_max_socket_count();
|
||||
|
||||
virtual bool is_protocol_supported(nsapi_protocol_t protocol);
|
||||
|
||||
virtual nsapi_error_t create_socket_impl(CellularSocket *socket);
|
||||
|
||||
virtual nsapi_error_t socket_connect(nsapi_socket_t handle, const SocketAddress &address);
|
||||
|
|
|
|||
|
|
@ -38,6 +38,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP,
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
0, // PROPERTY_SOCKET_COUNT
|
||||
0, // PROPERTY_IP_TCP
|
||||
0, // PROPERTY_IP_UDP
|
||||
20, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
|
||||
TELIT_HE910::TELIT_HE910(FileHandle *fh) : AT_CellularDevice(fh)
|
||||
|
|
@ -45,11 +49,6 @@ TELIT_HE910::TELIT_HE910(FileHandle *fh) : AT_CellularDevice(fh)
|
|||
set_cellular_properties(cellular_properties);
|
||||
}
|
||||
|
||||
uint16_t TELIT_HE910::get_send_delay() const
|
||||
{
|
||||
return DEFAULT_DELAY_BETWEEN_AT_COMMANDS;
|
||||
}
|
||||
|
||||
nsapi_error_t TELIT_HE910::init()
|
||||
{
|
||||
nsapi_error_t err = AT_CellularDevice::init();
|
||||
|
|
|
|||
|
|
@ -29,9 +29,6 @@
|
|||
|
||||
#include "AT_CellularDevice.h"
|
||||
|
||||
//the delay between sending AT commands
|
||||
#define DEFAULT_DELAY_BETWEEN_AT_COMMANDS 20
|
||||
|
||||
namespace mbed {
|
||||
|
||||
class TELIT_HE910 : public AT_CellularDevice {
|
||||
|
|
@ -39,7 +36,6 @@ public:
|
|||
TELIT_HE910(FileHandle *fh);
|
||||
|
||||
protected: // AT_CellularDevice
|
||||
virtual uint16_t get_send_delay() const;
|
||||
virtual nsapi_error_t init();
|
||||
};
|
||||
} // namespace mbed
|
||||
|
|
|
|||
|
|
@ -59,11 +59,12 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
0, // PROPERTY_SOCKET_COUNT
|
||||
0, // PROPERTY_IP_TCP
|
||||
0, // PROPERTY_IP_UDP
|
||||
20, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
|
||||
//the delay between sending AT commands
|
||||
static const uint16_t DEFAULT_DELAY_BETWEEN_AT_COMMANDS = 20;
|
||||
|
||||
TELIT_ME910::TELIT_ME910(FileHandle *fh, PinName pwr, bool active_high)
|
||||
: AT_CellularDevice(fh),
|
||||
_active_high(active_high),
|
||||
|
|
@ -77,12 +78,6 @@ AT_CellularContext *TELIT_ME910::create_context_impl(ATHandler &at, const char *
|
|||
return new TELIT_ME910_CellularContext(at, this, apn, cp_req, nonip_req);
|
||||
}
|
||||
|
||||
|
||||
uint16_t TELIT_ME910::get_send_delay() const
|
||||
{
|
||||
return DEFAULT_DELAY_BETWEEN_AT_COMMANDS;
|
||||
}
|
||||
|
||||
nsapi_error_t TELIT_ME910::init()
|
||||
{
|
||||
nsapi_error_t err = AT_CellularDevice::init();
|
||||
|
|
|
|||
|
|
@ -41,7 +41,6 @@ public:
|
|||
TELIT_ME910(FileHandle *fh, PinName pwr, bool active_high);
|
||||
|
||||
protected: // AT_CellularDevice
|
||||
virtual uint16_t get_send_delay() const;
|
||||
virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn, bool cp_req = false, bool nonip_req = false);
|
||||
virtual nsapi_error_t init();
|
||||
virtual nsapi_error_t hard_power_on();
|
||||
|
|
|
|||
|
|
@ -38,6 +38,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
7, // PROPERTY_SOCKET_COUNT
|
||||
1, // PROPERTY_IP_TCP
|
||||
1, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
#elif defined(UBX_MDM_SARA_U2XX) || defined(UBX_MDM_SARA_G3XX)
|
||||
static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
||||
|
|
@ -61,6 +65,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
7, // PROPERTY_SOCKET_COUNT
|
||||
1, // PROPERTY_IP_TCP
|
||||
1, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
#else
|
||||
static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
||||
|
|
@ -80,6 +88,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
0, // PROPERTY_AT_CGEREP
|
||||
0, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
0, // PROPERTY_SOCKET_COUNT
|
||||
0, // PROPERTY_IP_TCP
|
||||
0, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -107,16 +107,6 @@ void UBLOX_AT_CellularStack::UUPSDD_URC()
|
|||
clear_socket(socket);
|
||||
}
|
||||
|
||||
int UBLOX_AT_CellularStack::get_max_socket_count()
|
||||
{
|
||||
return UBLOX_MAX_SOCKET;
|
||||
}
|
||||
|
||||
bool UBLOX_AT_CellularStack::is_protocol_supported(nsapi_protocol_t protocol)
|
||||
{
|
||||
return (protocol == NSAPI_UDP || protocol == NSAPI_TCP);
|
||||
}
|
||||
|
||||
nsapi_error_t UBLOX_AT_CellularStack::create_socket_impl(CellularSocket *socket)
|
||||
{
|
||||
int sock_id = SOCKET_UNUSED;
|
||||
|
|
@ -126,14 +116,14 @@ nsapi_error_t UBLOX_AT_CellularStack::create_socket_impl(CellularSocket *socket)
|
|||
err = _at.at_cmd_int("+USOCR", "=17", sock_id);
|
||||
} else if (socket->proto == NSAPI_TCP) {
|
||||
err = _at.at_cmd_int("+USOCR", "=6", sock_id);
|
||||
} // Unsupported protocol is checked in "is_protocol_supported" function
|
||||
} // Unsupported protocol is checked in socket_open()
|
||||
|
||||
if ((err != NSAPI_ERROR_OK) || (sock_id == -1)) {
|
||||
return NSAPI_ERROR_NO_SOCKET;
|
||||
}
|
||||
|
||||
// Check for duplicate socket id delivered by modem
|
||||
for (int i = 0; i < UBLOX_MAX_SOCKET; i++) {
|
||||
for (int i = 0; i < _device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT); i++) {
|
||||
CellularSocket *sock = _socket[i];
|
||||
if (sock && sock != socket && sock->id == sock_id) {
|
||||
return NSAPI_ERROR_NO_SOCKET;
|
||||
|
|
@ -378,7 +368,7 @@ UBLOX_AT_CellularStack::CellularSocket *UBLOX_AT_CellularStack::find_socket(int
|
|||
{
|
||||
CellularSocket *socket = NULL;
|
||||
|
||||
for (unsigned int x = 0; (socket == NULL) && (x < UBLOX_MAX_SOCKET); x++) {
|
||||
for (unsigned int x = 0; (socket == NULL) && (x < _device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT)); x++) {
|
||||
if (_socket) {
|
||||
if (_socket[x]->id == id) {
|
||||
socket = (_socket[x]);
|
||||
|
|
|
|||
|
|
@ -60,19 +60,11 @@ protected:
|
|||
*/
|
||||
static const int SOCKET_TIMEOUT = 1000;
|
||||
|
||||
/** Maximum allowed sockets.
|
||||
*/
|
||||
static const int UBLOX_MAX_SOCKET = 7;
|
||||
|
||||
/** The maximum number of bytes in a packet that can be write/read from
|
||||
* the AT interface in one go.
|
||||
*/
|
||||
static const int UBLOX_MAX_PACKET_SIZE = 1024;
|
||||
|
||||
virtual int get_max_socket_count();
|
||||
|
||||
virtual bool is_protocol_supported(nsapi_protocol_t protocol);
|
||||
|
||||
virtual nsapi_error_t create_socket_impl(CellularSocket *socket);
|
||||
|
||||
virtual nsapi_error_t socket_connect(nsapi_socket_t handle, const SocketAddress &address);
|
||||
|
|
|
|||
|
|
@ -37,6 +37,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
1, // PROPERTY_NON_IP_PDP_TYPE
|
||||
0, // PROPERTY_AT_CGEREP
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
7, // PROPERTY_SOCKET_COUNT
|
||||
0, // PROPERTY_IP_TCP
|
||||
1, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
|
||||
UBLOX_N2XX::UBLOX_N2XX(FileHandle *fh): AT_CellularDevice(fh)
|
||||
|
|
|
|||
|
|
@ -64,16 +64,6 @@ void UBLOX_N2XX_CellularStack::NSONMI_URC()
|
|||
}
|
||||
}
|
||||
|
||||
int UBLOX_N2XX_CellularStack::get_max_socket_count()
|
||||
{
|
||||
return N2XX_MAX_SOCKET;
|
||||
}
|
||||
|
||||
bool UBLOX_N2XX_CellularStack::is_protocol_supported(nsapi_protocol_t protocol)
|
||||
{
|
||||
return (protocol == NSAPI_UDP);
|
||||
}
|
||||
|
||||
nsapi_error_t UBLOX_N2XX_CellularStack::create_socket_impl(CellularSocket *socket)
|
||||
{
|
||||
int sock_id = -1;
|
||||
|
|
@ -97,7 +87,7 @@ nsapi_error_t UBLOX_N2XX_CellularStack::create_socket_impl(CellularSocket *socke
|
|||
_at.unlock();
|
||||
|
||||
// Check for duplicate socket id delivered by modem
|
||||
for (int i = 0; i < N2XX_MAX_SOCKET; i++) {
|
||||
for (int i = 0; i < _device.get_property(AT_CellularDevice::PROPERTY_SOCKET_COUNT); i++) {
|
||||
CellularSocket *sock = _socket[i];
|
||||
if (sock && sock != socket && sock->id == sock_id) {
|
||||
return NSAPI_ERROR_NO_SOCKET;
|
||||
|
|
|
|||
|
|
@ -47,19 +47,11 @@ protected:
|
|||
*/
|
||||
static const int SOCKET_TIMEOUT = 1000;
|
||||
|
||||
/** Maximum allowed sockets.
|
||||
*/
|
||||
static const int N2XX_MAX_SOCKET = 7;
|
||||
|
||||
/** The maximum number of bytes in a packet that can be write/read from
|
||||
* the AT interface in one go.
|
||||
*/
|
||||
static const int N2XX_MAX_PACKET_SIZE = 512;
|
||||
|
||||
virtual int get_max_socket_count();
|
||||
|
||||
virtual bool is_protocol_supported(nsapi_protocol_t protocol);
|
||||
|
||||
virtual nsapi_error_t create_socket_impl(CellularSocket *socket);
|
||||
|
||||
virtual nsapi_size_or_error_t socket_sendto_impl(CellularSocket *socket, const SocketAddress &address,
|
||||
|
|
|
|||
|
|
@ -39,6 +39,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
0, // PROPERTY_SOCKET_COUNT
|
||||
0, // PROPERTY_IP_TCP
|
||||
0, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
#elif defined(UBX_MDM_SARA_U2XX) || defined(UBX_MDM_SARA_G3XX)
|
||||
static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
||||
|
|
@ -62,6 +66,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
1, // PROPERTY_AT_CGEREP
|
||||
1, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
0, // PROPERTY_SOCKET_COUNT
|
||||
0, // PROPERTY_IP_TCP
|
||||
0, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
#else
|
||||
static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
||||
|
|
@ -81,6 +89,10 @@ static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = {
|
|||
0, // PROPERTY_NON_IP_PDP_TYPE
|
||||
0, // PROPERTY_AT_CGEREP
|
||||
0, // PROPERTY_AT_COPS_FALLBACK_AUTO
|
||||
0, // PROPERTY_SOCKET_COUNT
|
||||
0, // PROPERTY_IP_TCP
|
||||
0, // PROPERTY_IP_UDP
|
||||
0, // PROPERTY_AT_SEND_DELAY
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue