mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			Cellular: Added set routine for baud rate
							parent
							
								
									cbf9f0650b
								
							
						
					
					
						commit
						c484fc88f9
					
				| 
						 | 
				
			
			@ -25,6 +25,8 @@ set(unittest-test-sources
 | 
			
		|||
  stubs/EventQueue_stub.cpp
 | 
			
		||||
  stubs/FileHandle_stub.cpp
 | 
			
		||||
  stubs/us_ticker_stub.cpp
 | 
			
		||||
  stubs/UARTSerial_stub.cpp
 | 
			
		||||
  stubs/SerialBase_stub.cpp
 | 
			
		||||
  stubs/mbed_assert_stub.c
 | 
			
		||||
  stubs/mbed_poll_stub.cpp
 | 
			
		||||
  stubs/Timer_stub.cpp
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -418,3 +418,7 @@ void ATHandler::set_send_delay(uint16_t send_delay)
 | 
			
		|||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATHandler::set_baud(int baud_rate)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -261,3 +261,13 @@ nsapi_error_t AT_CellularDevice::clear()
 | 
			
		|||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularDevice::set_baud_rate(int baud_rate)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularDevice::set_baud_rate_impl(int baud_rate)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -176,6 +176,10 @@ public:
 | 
			
		|||
    {
 | 
			
		||||
        return NSAPI_ERROR_OK;
 | 
			
		||||
    }
 | 
			
		||||
    nsapi_error_t set_baud_rate(int baud_rate)
 | 
			
		||||
    {
 | 
			
		||||
        return NSAPI_ERROR_OK;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void verify_timeout_array(const uint16_t timeout[], int array_len)
 | 
			
		||||
    {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -443,6 +443,13 @@ public:
 | 
			
		|||
     */
 | 
			
		||||
    virtual nsapi_error_t release_at_handler(ATHandler *at_handler) = 0;
 | 
			
		||||
 | 
			
		||||
    /** Sets cellular modem to given baud rate
 | 
			
		||||
     *
 | 
			
		||||
     *  @param baud_rate
 | 
			
		||||
     *  @return NSAPI_ERROR_OK on success, NSAPI_ERROR_DEVICE_ERROR on failure
 | 
			
		||||
     */
 | 
			
		||||
    virtual nsapi_error_t set_baud_rate(int baud_rate) = 0;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    friend class AT_CellularNetwork;
 | 
			
		||||
    friend class AT_CellularContext;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1612,3 +1612,9 @@ void ATHandler::write_hex_string(char *str, size_t size)
 | 
			
		|||
        write(hexbuf, 2);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATHandler::set_baud(int baud_rate)
 | 
			
		||||
{
 | 
			
		||||
    static_cast<UARTSerial *>(_fileHandle)->set_baud(baud_rate);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,8 @@
 | 
			
		|||
 | 
			
		||||
#include <cstdarg>
 | 
			
		||||
 | 
			
		||||
#include "UARTSerial.h"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * If application calls associated FileHandle only from single thread context
 | 
			
		||||
  * then locking between AT command and response is not needed. However,
 | 
			
		||||
| 
						 | 
				
			
			@ -219,6 +221,12 @@ public:
 | 
			
		|||
     */
 | 
			
		||||
    void set_send_delay(uint16_t send_delay);
 | 
			
		||||
 | 
			
		||||
    /** Sets UARTSerial filehandle to given baud rate
 | 
			
		||||
     *
 | 
			
		||||
     *  @param baud_rate
 | 
			
		||||
     */
 | 
			
		||||
    void set_baud(int baud_rate);
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    void event();
 | 
			
		||||
#if defined AT_HANDLER_MUTEX && defined MBED_CONF_RTOS_PRESENT
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -635,3 +635,25 @@ nsapi_error_t AT_CellularDevice::clear()
 | 
			
		|||
 | 
			
		||||
    return err;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularDevice::set_baud_rate(int baud_rate)
 | 
			
		||||
{
 | 
			
		||||
    nsapi_error_t error = set_baud_rate_impl(baud_rate);
 | 
			
		||||
 | 
			
		||||
    if (error) {
 | 
			
		||||
        tr_warning("Baudrate was not changed to desired value: %d", baud_rate);
 | 
			
		||||
        return error;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    _at->set_baud(baud_rate);
 | 
			
		||||
 | 
			
		||||
    // Give some time before starting using the UART with the new baud rate
 | 
			
		||||
    rtos::ThisThread::sleep_for(3000);
 | 
			
		||||
 | 
			
		||||
    return error;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularDevice::set_baud_rate_impl(int baud_rate)
 | 
			
		||||
{
 | 
			
		||||
    return _at->at_cmd_discard("+IPR", "=", "%d", baud_rate);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -135,6 +135,8 @@ public:
 | 
			
		|||
 | 
			
		||||
    virtual CellularContext *get_context_list() const;
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_error_t set_baud_rate(int baud_rate);
 | 
			
		||||
 | 
			
		||||
    AT_CellularNetwork *_network;
 | 
			
		||||
    AT_CellularSMS *_sms;
 | 
			
		||||
    AT_CellularInformation *_information;
 | 
			
		||||
| 
						 | 
				
			
			@ -153,6 +155,7 @@ protected:
 | 
			
		|||
    // Sets up parameters for AT handler, for now only the send delay and URCs.
 | 
			
		||||
    // This kind of routine is needed for initialisation routines that are virtual and therefore cannot be called from constructor.
 | 
			
		||||
    void setup_at_handler();
 | 
			
		||||
    virtual nsapi_error_t set_baud_rate_impl(int baud_rate);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    void urc_nw_deact();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -95,6 +95,11 @@ nsapi_error_t QUECTEL_BC95::init()
 | 
			
		|||
    return _at->unlock_return_error();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t QUECTEL_BC95::set_baud_rate_impl(int baud_rate)
 | 
			
		||||
{
 | 
			
		||||
    return _at->at_cmd_discard("+NATSPEED", "=", "%d%d%d%d%d%d%d", baud_rate, 30, 0, 2, 1, 0, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if MBED_CONF_QUECTEL_BC95_PROVIDE_DEFAULT
 | 
			
		||||
#include "UARTSerial.h"
 | 
			
		||||
CellularDevice *CellularDevice::get_default_instance()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,6 +42,7 @@ protected: // AT_CellularDevice
 | 
			
		|||
    virtual AT_CellularNetwork *open_network_impl(ATHandler &at);
 | 
			
		||||
    virtual AT_CellularContext *create_context_impl(ATHandler &at, const char *apn, bool cp_req = false, bool nonip_req = false);
 | 
			
		||||
    virtual AT_CellularInformation *open_information_impl(ATHandler &at);
 | 
			
		||||
    virtual nsapi_error_t set_baud_rate_impl(int baud_rate);
 | 
			
		||||
    virtual nsapi_error_t init();
 | 
			
		||||
 | 
			
		||||
public: // NetworkInterface
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue