upm
1.7.1
Sensor/Actuator repository for libmraa (v2.0.0)
|
API for a Generic AT command based UART device. More...
This is a generic UART device driver for accessing UART based devices that utilize an "AT" command set. Typically these devices are Radios, Modems, and similar devices that are configured and controlled by emitting "AT" commands.
Public Member Functions | |
UARTAT (unsigned int uart, unsigned int baudrate) | |
UARTAT (std::string uart_path, unsigned int baudrate) | |
~UARTAT () | |
std::string | readStr (size_t size) |
int | writeStr (std::string buffer) |
void | setBaudrate (unsigned int baudrate) |
void | setResponseWaitTime (unsigned int wait_time) |
bool | dataAvailable (unsigned int millis) |
bool | commandMode (const std::string cmd_chars, unsigned int guard_ms) |
bool | inCommandMode () |
void | drain () |
std::string | commandWithResponse (const std::string cmd, size_t resp_len) |
std::string | commandWaitFor (const std::string cmd, size_t resp_len, const std::string waitString, unsigned int millis) |
void | command (const std::string cmd) |
std::string | stringCR2LF (std::string str) |
void | setFlowControl (UARTAT_FLOW_CONTROL_T fc) |
bool | find (const std::string buffer, const std::string str) |
void | filterCR (bool enable) |
Protected Attributes | |
uartat_context | m_uartat |
UARTAT | ( | unsigned int | uart, |
unsigned int | baudrate | ||
) |
UARTAT object constructor for a UART specified by MRAA number.
uart | Specify which uart to use. |
baudrate | Specify the baudrate to use. |
UARTAT | ( | std::string | uart_path, |
unsigned int | baudrate | ||
) |
UARTAT object constructor for a UART specified by PATH (ex: /dev/ttyUSB0)
uart_path | Specify path of UART device. |
baudrate | Specify the baudrate to use. |
std::string readStr | ( | size_t | size | ) |
Read character data from the device.
size | The maximum number of characters to read. |
int writeStr | ( | std::string | buffer | ) |
Write character data to the device.
buffer | The string containing the data to write. |
void setBaudrate | ( | unsigned int | baudrate | ) |
Set the baudrate of the device.
baudrate | The baud rate to set for the device. |
void setResponseWaitTime | ( | unsigned int | wait_time | ) |
Set the default time, in milliseconds, to wait for data to arrive after sending a command.
wait_time | The response delay to set, in milliseconds. |
bool dataAvailable | ( | unsigned int | millis | ) |
Determine whether there is data available to be read. In the case of a UART, this function will wait up to "millis" milliseconds for data to become available. In the case of an I2C device, the millis argument is ignored and the function will return immediately, indicating whether data is available.
millis | The number of milliseconds to wait for data to become available. |
bool commandMode | ( | const std::string | cmd_chars, |
unsigned int | guard_ms | ||
) |
Place the device in AT command mode. Many devices operate in a transparent mode and an AT command mode. Command mode is required to issue AT based commands. When in transparent mode, the device will usually listen for a special sequence of characters and delays, indicating that AT command mode should be entered.
On most devices, the sequence is: <wait 1 second>+++<wait 1 second>
For most devices, the wait time is 1 second (1000 ms) and the character sequence is "+++". These options can often be configured on the device.
This function will wait millis milliseconds, write the command characters (typically "+++"), then wait millis milliseconds again. At this time a read will be attempted, looking for the "OK" response indicating command mode was successfully entered.
cmd_chars | The character sequence to write, typically "+++". |
guard_ms | The number of milliseconds to delay before and after the cmd_chars are written. |
bool inCommandMode | ( | ) |
Check to see if the device is in command mode. This is accomplished by sending an "AT\r" command and seeing if "OK" or "0" is returned.
void drain | ( | ) |
Read and throw away any data currently available to be read. This is useful to avoid reading data that might have been the result of a previous command interfering with data you currently want to read. This function is automatically called by commandWithResponse(), command(), and commandWaitfor() prior to writing the requested command to the device.
string commandWithResponse | ( | const std::string | cmd, |
size_t | resp_len | ||
) |
Send an AT command and optionally return a response.
cmd | A character string containing the AT command to send, including the "AT" prefix and a terminating carriage return ("\r"). |
resp_len | The maximum number of characters to read from the device. |
string commandWaitFor | ( | const std::string | cmd, |
size_t | resp_len, | ||
const std::string | waitString, | ||
unsigned int | millis | ||
) |
Send an AT command and return a response, while waiting for a specific string. If the string isn't found the returned string will be empty. If the string is found, the function will return immediately.
cmd | A character string containing the AT command to send, including the "AT" prefix and a terminating carriage return ("\r"). |
resp_len | The maximum number of characters to read from the device. |
waitString | The string to look for. If found, the response will be returned immediately regardless of the timeout setting. |
millis | The maximum number of milliseconds to wait for the string. |
void command | ( | const std::string | cmd | ) |
Send an AT command and ignore any response.
cmd | The AT command to send, including the "AT" prefix and a terminating carriage return ("\r"). |
string stringCR2LF | ( | std::string | str | ) |
This is a convenience method that converts each CR () in a string to a LF (
) and returns it. This is useful for outputting the response to an AT command for instance, which is often CR terminated.
str | The string to convert |
void setFlowControl | ( | UARTAT_FLOW_CONTROL_T | fc | ) |
Set a flow control method for the UART. By default, during initialization, flow control is disabled.
fc | One of the UARTAT_FLOW_CONTROL_T values. |
bool find | ( | const std::string | buffer, |
const std::string | str | ||
) |
Look for a string in a buffer. This is a utility function that can be used to indicate if a given string is present in a supplied buffer. The search is case sensitive.
buffer | The string buffer in which to search. |
str | The string to search for. |
void filterCR | ( | bool | enable | ) |
Filter out carriage returns (CR) from response buffers if enabled. This operates only on the response buffers returned from commandWithResponse(), command(), and commandWaitfor().
enable | true to filter out CR's, false otherwise |