add BG96 povermanagemet

pull/10952/head
Pekka Pesu 2019-05-10 10:37:22 +03:00 committed by Arto Kinnunen
parent 4c0c4f5f08
commit d8ab1bb87e
3 changed files with 69 additions and 16 deletions

View File

@ -78,27 +78,30 @@ void QUECTEL_BG96::set_ready_cb(Callback<void()> callback)
nsapi_error_t QUECTEL_BG96::hard_power_on() nsapi_error_t QUECTEL_BG96::hard_power_on()
{ {
DigitalOut ModemResetIn (MBED_CONF_QUECTEL_BG96_POWER); DigitalOut ModemResetIn (MBED_CONF_QUECTEL_BG96_PWR);
printf("QUECTEL_BG96::hard_power_on\n");
wait_ms(250); wait_ms(250);
ModemResetIn = 0; ModemResetIn = 0;
wait_ms(250); wait_ms(250);
ModemResetIn = 1; ModemResetIn = 1;
wait_ms(500); wait_ms(500);
wait_ms(250);
return NSAPI_ERROR_OK; return NSAPI_ERROR_OK;
} }
nsapi_error_t QUECTEL_BG96::soft_power_on() nsapi_error_t QUECTEL_BG96::soft_power_on()
{ {
DigitalOut ModemPwrkey (MBED_CONF_QUECTEL_BG96_RESET); // turn moden on
printf("QUECTEL_BG96::soft_power_on\n"); DigitalOut ModemPwrkey (MBED_CONF_QUECTEL_BG96_RST);
ModemPwrkey = 0; ModemPwrkey = 0;
wait_ms(100); wait_ms(100);
ModemPwrkey = 1; ModemPwrkey = 1;
wait_ms(500); wait_ms(500);
ModemPwrkey = 0; ModemPwrkey = 0;
wait_ms(500); wait_ms(500);
printf("wait for RDY\n");
// wait for RDY
_at->lock(); _at->lock();
_at->set_at_timeout(60000); _at->set_at_timeout(60000);
_at->resp_start(); _at->resp_start();
@ -106,21 +109,66 @@ printf("wait for RDY\n");
bool rdy = _at->consume_to_stop_tag(); bool rdy = _at->consume_to_stop_tag();
_at->set_stop_tag(OK); _at->set_stop_tag(OK);
_at->unlock(); _at->unlock();
if (!rdy) if (!rdy)
{ {
return NSAPI_ERROR_DEVICE_ERROR; return NSAPI_ERROR_DEVICE_ERROR;
} }
return NSAPI_ERROR_OK; return NSAPI_ERROR_OK;
} }
nsapi_error_t QUECTEL_BG96::hard_power_off() nsapi_error_t QUECTEL_BG96::hard_power_off()
{ {
DigitalOut ModemPwrkey (MBED_CONF_QUECTEL_BG96_POWER); // turn moden off
printf("QUECTEL_BG96::hard_power_off\n"); DigitalOut ModemPwrkey (MBED_CONF_QUECTEL_BG96_PWR);
ModemPwrkey = 1; ModemPwrkey = 1;
wait_ms(250); wait_ms(250);
ModemPwrkey = 0; ModemPwrkey = 0;
return NSAPI_ERROR_OK; return NSAPI_ERROR_OK;
} }
nsapi_error_t QUECTEL_BG96::init()
{
int retry = 0;
_at->lock();
_at->flush();
_at->cmd_start("ATE0"); // echo off
_at->cmd_stop_read_resp();
_at->cmd_start("AT+CMEE=1"); // verbose responses
_at->cmd_stop_read_resp();
if (_at->get_last_error() != NSAPI_ERROR_OK)
{
do
{
_at->cmd_start("AT+CFUN=1"); // set full functionality
_at->cmd_stop_read_resp();
// CFUN executed ok
if (_at->get_last_error() != NSAPI_ERROR_OK)
{
// wait some time that modem gets ready for CFUN command, and try again
retry++;
_at->flush();
wait_ms(64);
}
else
{
// yes continue
break;
}
/* code */
} while ( (retry < 3) );
}
return _at->unlock_return_error();
}
#if MBED_CONF_QUECTEL_BG96_PROVIDE_DEFAULT #if MBED_CONF_QUECTEL_BG96_PROVIDE_DEFAULT
#include "UARTSerial.h" #include "UARTSerial.h"
CellularDevice *CellularDevice::get_default_instance() CellularDevice *CellularDevice::get_default_instance()

View File

@ -43,6 +43,7 @@ protected: // AT_CellularDevice
virtual nsapi_error_t hard_power_on(); virtual nsapi_error_t hard_power_on();
virtual nsapi_error_t hard_power_off(); virtual nsapi_error_t hard_power_off();
virtual nsapi_error_t soft_power_on(); virtual nsapi_error_t soft_power_on();
virtual nsapi_error_t init();
public: public:
void handle_urc(FileHandle *fh); void handle_urc(FileHandle *fh);

View File

@ -17,6 +17,18 @@
"help": "CTS pin for serial connection", "help": "CTS pin for serial connection",
"value": null "value": null
}, },
"pwr": {
"help": "Power control pin",
"value": null
},
"rst": {
"help": "Reset control pin",
"value": null
},
"polarity": {
"help": "Pin polarity, 1 = Active high, 0 = Active low",
"value": null
},
"baudrate" : { "baudrate" : {
"help": "Serial connection baud rate", "help": "Serial connection baud rate",
"value": 115200 "value": 115200
@ -24,14 +36,6 @@
"provide-default": { "provide-default": {
"help": "Provide as default CellularDevice [true/false]", "help": "Provide as default CellularDevice [true/false]",
"value": false "value": false
},
"power": {
"help": "Modem's power key.",
"value": null
},
"reset": {
"help": "Modem's reset key.",
"value": null
} }
} }
} }