diff --git a/examples/c++/CMakeLists.txt b/examples/c++/CMakeLists.txt index a76f3a0d..3c745e5d 100644 --- a/examples/c++/CMakeLists.txt +++ b/examples/c++/CMakeLists.txt @@ -274,7 +274,7 @@ add_example (l3gd20) add_example (l3gd20-i2c) add_example (bmx055) add_example (ms5611) -add_example (vk2828u7) +add_example (nmea_gps) add_example (mma7361) add_example (bh1750) diff --git a/examples/c++/vk2828u7.cxx b/examples/c++/nmea_gps.cxx similarity index 89% rename from examples/c++/vk2828u7.cxx rename to examples/c++/nmea_gps.cxx index ae171539..8d4f62b0 100644 --- a/examples/c++/vk2828u7.cxx +++ b/examples/c++/nmea_gps.cxx @@ -26,7 +26,7 @@ #include #include -#include "vk2828u7.hpp" +#include "nmea_gps.hpp" using namespace std; @@ -46,9 +46,9 @@ int main() //! [Interesting] - // Instantiate a VK2828U7 sensor on uart 0 at 9600 baud with enable - // pin on D3 - upm::VK2828U7 *sensor = new upm::VK2828U7(0, 9600, 3); + // Instantiate a NMEA_GPS sensor on uart 0 at 9600 baud with enable + // pin on D3. If you do not need an enable pin, you can specify -1. + upm::NMEAGPS *sensor = new upm::NMEAGPS(0, 9600, 3); // loop, dumping NMEA data out as fast as it comes in while (shouldRun && sensor->dataAvailable(5000)) diff --git a/examples/c/CMakeLists.txt b/examples/c/CMakeLists.txt index 2f20d586..27bcdfb4 100644 --- a/examples/c/CMakeLists.txt +++ b/examples/c/CMakeLists.txt @@ -87,7 +87,7 @@ link_directories (${MRAA_LIBDIR}) # mq? will use module gas # grove* will use module grove add_example (dfrph) -add_example (vk2828u7) +add_example (nmea_gps) add_example (mma7361) add_example (bh1750) add_example (urm37) diff --git a/examples/c/vk2828u7.c b/examples/c/nmea_gps.c similarity index 81% rename from examples/c/vk2828u7.c rename to examples/c/nmea_gps.c index 6985d5dd..4393f1d0 100644 --- a/examples/c/vk2828u7.c +++ b/examples/c/nmea_gps.c @@ -25,7 +25,7 @@ #include #include -#include "vk2828u7.h" +#include "nmea_gps.h" bool shouldRun = true; @@ -43,13 +43,13 @@ int main() //! [Interesting] - // Instantiate a VK2828U7 sensor on uart 0 at 9600 baud with enable - // pin on D3 - vk2828u7_context sensor = vk2828u7_init(0, 9600, 3); + // Instantiate a NMEA_GPS sensor on uart 0 at 9600 baud with enable + // pin on D3. If you do not need an enable pin, you can specify -1. + nmea_gps_context sensor = nmea_gps_init(0, 9600, 3); if (!sensor) { - printf("vk2828u7_init() failed.\n"); + printf("nmea_gps_init() failed.\n"); return 1; } @@ -57,9 +57,9 @@ int main() int rv = 0; // loop, dumping NMEA data out as fast as it comes in - while (shouldRun && vk2828u7_data_available(sensor, 5000)) + while (shouldRun && nmea_gps_data_available(sensor, 5000)) { - if ((rv = vk2828u7_read(sensor, buffer, bufferLength)) >= 0) + if ((rv = nmea_gps_read(sensor, buffer, bufferLength)) >= 0) { int i; for (i=0; i #include -#include "vk2828u7.h" +#include "nmea_gps.h" #include "upm_utilities.h" -vk2828u7_context vk2828u7_init(unsigned int uart, unsigned int baudrate, +nmea_gps_context nmea_gps_init(unsigned int uart, unsigned int baudrate, int enable_pin) { - vk2828u7_context dev = - (vk2828u7_context)malloc(sizeof(struct _vk2828u7_context)); + nmea_gps_context dev = + (nmea_gps_context)malloc(sizeof(struct _nmea_gps_context)); if (!dev) return NULL; // zero out context - memset((void *)dev, 0, sizeof(struct _vk2828u7_context)); + memset((void *)dev, 0, sizeof(struct _nmea_gps_context)); dev->uart = NULL; dev->gpio_en = NULL; @@ -50,14 +50,14 @@ vk2828u7_context vk2828u7_init(unsigned int uart, unsigned int baudrate, if (!(dev->uart = mraa_uart_init(uart))) { printf("%s: mraa_uart_init() failed.\n", __FUNCTION__); - vk2828u7_close(dev); + nmea_gps_close(dev); return NULL; } - if (vk2828u7_set_baudrate(dev, baudrate)) + if (nmea_gps_set_baudrate(dev, baudrate)) { - printf("%s: vk2828u7_set_baudrate() failed.\n", __FUNCTION__); - vk2828u7_close(dev); + printf("%s: nmea_gps_set_baudrate() failed.\n", __FUNCTION__); + nmea_gps_close(dev); return NULL; } @@ -69,25 +69,25 @@ vk2828u7_context vk2828u7_init(unsigned int uart, unsigned int baudrate, if (!(dev->gpio_en = mraa_gpio_init(enable_pin))) { printf("%s: mraa_gpio_init() failed.\n", __FUNCTION__); - vk2828u7_close(dev); + nmea_gps_close(dev); return NULL; } mraa_gpio_dir(dev->gpio_en, MRAA_GPIO_OUT); // wake up - vk2828u7_enable(dev, true); + nmea_gps_enable(dev, true); } return dev; } -void vk2828u7_close(vk2828u7_context dev) +void nmea_gps_close(nmea_gps_context dev) { assert(dev != NULL); // sleepy-time - vk2828u7_enable(dev, false); + nmea_gps_enable(dev, false); if (dev->uart) mraa_uart_stop(dev->uart); @@ -97,7 +97,7 @@ void vk2828u7_close(vk2828u7_context dev) free(dev); } -upm_result_t vk2828u7_enable(const vk2828u7_context dev, bool enable) +upm_result_t nmea_gps_enable(const nmea_gps_context dev, bool enable) { assert(dev != NULL); @@ -112,21 +112,21 @@ upm_result_t vk2828u7_enable(const vk2828u7_context dev, bool enable) return UPM_SUCCESS; } -int vk2828u7_read(const vk2828u7_context dev, char *buffer, size_t len) +int nmea_gps_read(const nmea_gps_context dev, char *buffer, size_t len) { assert(dev != NULL); return mraa_uart_read(dev->uart, buffer, len); } -int vk2828u7_write(const vk2828u7_context dev, char *buffer, size_t len) +int nmea_gps_write(const nmea_gps_context dev, char *buffer, size_t len) { assert(dev != NULL); return mraa_uart_write(dev->uart, buffer, len); } -bool vk2828u7_data_available(const vk2828u7_context dev, unsigned int millis) +bool nmea_gps_data_available(const nmea_gps_context dev, unsigned int millis) { assert(dev != NULL); @@ -136,7 +136,7 @@ bool vk2828u7_data_available(const vk2828u7_context dev, unsigned int millis) return false; } -upm_result_t vk2828u7_set_baudrate(const vk2828u7_context dev, +upm_result_t nmea_gps_set_baudrate(const nmea_gps_context dev, unsigned int baudrate) { assert(dev != NULL); diff --git a/src/vk2828u7/vk2828u7.cxx b/src/nmea_gps/nmea_gps.cxx similarity index 62% rename from src/vk2828u7/vk2828u7.cxx rename to src/nmea_gps/nmea_gps.cxx index 8ce3c1ad..372731c9 100644 --- a/src/vk2828u7/vk2828u7.cxx +++ b/src/nmea_gps/nmea_gps.cxx @@ -25,65 +25,65 @@ #include #include -#include "vk2828u7.hpp" +#include "nmea_gps.hpp" using namespace upm; using namespace std; -VK2828U7::VK2828U7(unsigned int uart, unsigned int baudrate, +NMEAGPS::NMEAGPS(unsigned int uart, unsigned int baudrate, int enable_pin) : - m_vk2828u7(vk2828u7_init(uart, baudrate, enable_pin)) + m_nmea_gps(nmea_gps_init(uart, baudrate, enable_pin)) { - if (!m_vk2828u7) + if (!m_nmea_gps) throw std::runtime_error(string(__FUNCTION__) - + ": vk2828u7_init() failed"); + + ": nmea_gps_init() failed"); } -VK2828U7::~VK2828U7() +NMEAGPS::~NMEAGPS() { - vk2828u7_close(m_vk2828u7); + nmea_gps_close(m_nmea_gps); } -std::string VK2828U7::readStr(unsigned int size) +std::string NMEAGPS::readStr(unsigned int size) { char buffer[size]; int rv; - if ((rv = vk2828u7_read(m_vk2828u7, buffer, size)) < 0) + if ((rv = nmea_gps_read(m_nmea_gps, buffer, size)) < 0) throw std::runtime_error(string(__FUNCTION__) - + ": vk2828u7_read() failed"); + + ": nmea_gps_read() failed"); return string(buffer, rv); } -int VK2828U7::writeStr(std::string buffer) +int NMEAGPS::writeStr(std::string buffer) { int rv; - if ((rv = vk2828u7_write(m_vk2828u7, (char*)buffer.data(), + if ((rv = nmea_gps_write(m_nmea_gps, (char*)buffer.data(), buffer.size())) < 0) throw std::runtime_error(string(__FUNCTION__) - + ": vk2828u7_write() failed"); + + ": nmea_gps_write() failed"); return rv; } -void VK2828U7::enable(bool enable) +void NMEAGPS::enable(bool enable) { - if (vk2828u7_enable(m_vk2828u7, enable)) + if (nmea_gps_enable(m_nmea_gps, enable)) throw std::runtime_error(string(__FUNCTION__) - + ": vk2828u7_enable() failed"); + + ": nmea_gps_enable() failed"); } -void VK2828U7::setBaudrate(unsigned int baudrate) +void NMEAGPS::setBaudrate(unsigned int baudrate) { - if (vk2828u7_set_baudrate(m_vk2828u7, baudrate)) + if (nmea_gps_set_baudrate(m_nmea_gps, baudrate)) throw std::runtime_error(string(__FUNCTION__) - + ": vk2828u7_baudrate() failed"); + + ": nmea_gps_baudrate() failed"); } -bool VK2828U7::dataAvailable(unsigned int millis) +bool NMEAGPS::dataAvailable(unsigned int millis) { - return vk2828u7_data_available(m_vk2828u7, millis); + return nmea_gps_data_available(m_nmea_gps, millis); } diff --git a/src/vk2828u7/vk2828u7.h b/src/nmea_gps/nmea_gps.h similarity index 79% rename from src/vk2828u7/vk2828u7.h rename to src/nmea_gps/nmea_gps.h index 614ecdcf..13b191e7 100644 --- a/src/vk2828u7/vk2828u7.h +++ b/src/nmea_gps/nmea_gps.h @@ -34,24 +34,24 @@ extern "C" { #endif /** - * @brief UPM C API for the DFRobot VK2828U7 GPS Module + * @brief UPM C API for a generic GPS serial device reporting NMEA data * - * The driver was tested with the DFRobot VK2828U7 GPS Module. It - * is accessed via a UART and provides NMEA data. + * This driver was tested with a number of GPS devices that emit + * NMEA data via a serial interface of some sort (typically a UART). * - * @snippet vk2828u7.c Interesting + * @snippet nmea_gps.c Interesting */ /** * Device context */ - typedef struct _vk2828u7_context { + typedef struct _nmea_gps_context { mraa_uart_context uart; mraa_gpio_context gpio_en; - } *vk2828u7_context; + } *nmea_gps_context; /** - * VK2828U7 Initializer + * NMEA_GPS Initializer * * @param uart Specify which uart to use. * @param baudrate Specify the baudrate to use. The device defaults @@ -60,13 +60,13 @@ extern "C" { * -1 to not use an enable pin. * @return an initialized device context on success, NULL on error. */ - vk2828u7_context vk2828u7_init(unsigned int uart, unsigned int baudrate, + nmea_gps_context nmea_gps_init(unsigned int uart, unsigned int baudrate, int enable_pin); /** - * VK2828U7 sensor close function + * NMEA_GPS sensor close function */ - void vk2828u7_close(vk2828u7_context dev); + void nmea_gps_close(nmea_gps_context dev); /** * Read character data from the device. @@ -76,7 +76,7 @@ extern "C" { * @param len The maximum size of the buffer * @return The number of bytes successfully read, or -1 on error */ - int vk2828u7_read(const vk2828u7_context dev, char *buffer, size_t len); + int nmea_gps_read(const nmea_gps_context dev, char *buffer, size_t len); /** * Write character data to the device. @@ -86,7 +86,7 @@ extern "C" { * @param len The number of bytes to write. * @return The number of bytes successfully written, or -1 on error. */ - int vk2828u7_write(const vk2828u7_context dev, char *buffer, size_t len); + int nmea_gps_write(const nmea_gps_context dev, char *buffer, size_t len); /** * Enable or disable the device. When disabled, the device enters a @@ -97,17 +97,17 @@ extern "C" { * @param enable true to enable the device, false otherwise. * @return UPM result */ - upm_result_t vk2828u7_enable(const vk2828u7_context dev, bool enable); + upm_result_t nmea_gps_enable(const nmea_gps_context dev, bool enable); /** - * Set the baudrate of the device. By default, vk2828u7_init() will + * Set the baudrate of the device. By default, nmea_gps_init() will * set the baudrate to 9600. * * @param dev sensor context * @param baudrate The baud rate to set for the device. * @return UPM result */ - upm_result_t vk2828u7_set_baudrate(const vk2828u7_context dev, + upm_result_t nmea_gps_set_baudrate(const nmea_gps_context dev, unsigned int baudrate); /** @@ -118,7 +118,7 @@ extern "C" { * become available. * @return true if data is available to be read, false otherwise. */ - bool vk2828u7_data_available(const vk2828u7_context dev, + bool nmea_gps_data_available(const nmea_gps_context dev, unsigned int millis); #ifdef __cplusplus diff --git a/src/vk2828u7/vk2828u7.hpp b/src/nmea_gps/nmea_gps.hpp similarity index 74% rename from src/vk2828u7/vk2828u7.hpp rename to src/nmea_gps/nmea_gps.hpp index 326500b4..42a9bd06 100644 --- a/src/vk2828u7/vk2828u7.hpp +++ b/src/nmea_gps/nmea_gps.hpp @@ -29,40 +29,37 @@ #include #include -#include "vk2828u7.h" +#include "nmea_gps.h" namespace upm { /** - * @brief UPM C++ API for the DFRobot VK2828U7 Analog Accelerometer - * @defgroup vk2828u7 libupm-vk2828u7 - * @ingroup dfrobot uart gpio gps + * @brief UPM C++ API for a generic GPS serial device reporting NMEA data + * @defgroup nmea_gps libupm-nmea_gps + * @ingroup uart gpio gps */ /** - * @library vk2828u7 - * @sensor vk2828u7 - * @comname DFRobot VK2828U7 GPS Module + * @library nmea_gps + * @sensor nmea_gps + * @comname Generic Serial GPS NMEA device * @type gps - * @man dfrobot + * @man dfrobot seed * @con uart gpio - * @web http://www.dfrobot.com/index.php?route=product/product&search=gps&description=true&product_id=1302#.V7tMfN9ytNK + * @altname VK2828u7 ublox LEA-6H * - * @brief API for the DFRobot VK2828U7 GPS Module + * @brief API for the NMEA GPS Module * - * The driver was tested with the DFRobot VK2828U7 GPS module. The - * website claims the device can be run at 5v, however the datasheet - * says the logic inputs and outputs can only handle 3.3v, and there - * does not appear to be a schematic available. So this module was - * tested only at 3.3v. + * This driver was tested with a number of GPS devices that emit + * NMEA data via a serial interface of some sort (typically a UART). * - * @snippet vk2828u7.cxx Interesting + * @snippet nmea_gps.cxx Interesting */ - class VK2828U7 { + class NMEAGPS { public: /** - * VK2828U7 object constructor + * NMEAGPS object constructor * * @param uart Specify which uart to use. * @param baudrate Specify the baudrate to use. The device defaults @@ -70,13 +67,13 @@ namespace upm { * @param enable_pin Specify the GPIO pin to use for the enable pin, * -1 to not use an enable pin. */ - VK2828U7(unsigned int uart, unsigned int baudrate, + NMEAGPS(unsigned int uart, unsigned int baudrate, int enable_pin); /** - * VK2828U7 object destructor + * NMEAGPS object destructor */ - ~VK2828U7(); + ~NMEAGPS(); /** * Read character data from the device. @@ -121,8 +118,8 @@ namespace upm { bool dataAvailable(unsigned int millis); protected: - // vk2828u7 device context - vk2828u7_context m_vk2828u7; + // nmeaGPS device context + nmea_gps_context m_nmea_gps; private: }; diff --git a/src/vk2828u7/vk2828u7_fti.c b/src/nmea_gps/nmea_gps_fti.c similarity index 54% rename from src/vk2828u7/vk2828u7_fti.c rename to src/nmea_gps/nmea_gps_fti.c index 0e27e8c7..86f17b12 100644 --- a/src/vk2828u7/vk2828u7_fti.c +++ b/src/nmea_gps/nmea_gps_fti.c @@ -22,40 +22,40 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#include "vk2828u7.h" +#include "nmea_gps.h" #include "upm_fti.h" /** * This file implements the Function Table Interface (FTI) for this sensor */ -const char upm_vk2828u7_name[] = "VK2828U7"; -const char upm_vk2828u7_description[] = "Serial GPS (providing NMEA data)"; -const upm_protocol_t upm_vk2828u7_protocol[] = {UPM_UART, UPM_GPIO}; -const upm_sensor_t upm_vk2828u7_category[] = {UPM_STREAM}; +const char upm_nmea_gps_name[] = "NMEA_GPS"; +const char upm_nmea_gps_description[] = "Serial GPS (providing NMEA data)"; +const upm_protocol_t upm_nmea_gps_protocol[] = {UPM_UART, UPM_GPIO}; +const upm_sensor_t upm_nmea_gps_category[] = {UPM_STREAM}; // forward declarations -const void* upm_vk2828u7_get_ft(upm_sensor_t sensor_type); -void* upm_vk2828u7_init_name(); -void upm_vk2828u7_close(void *dev); -int upm_vk2828u7_read(void *dev, char *buffer, int len); -int upm_vk2828u7_write(void *dev, char *buffer, int len); -bool upm_vk2828u7_data_available(void *dev, unsigned int timeout); +const void* upm_nmea_gps_get_ft(upm_sensor_t sensor_type); +void* upm_nmea_gps_init_name(); +void upm_nmea_gps_close(void *dev); +int upm_nmea_gps_read(void *dev, char *buffer, int len); +int upm_nmea_gps_write(void *dev, char *buffer, int len); +bool upm_nmea_gps_data_available(void *dev, unsigned int timeout); static const upm_sensor_ft ft = { - .upm_sensor_init_name = &upm_vk2828u7_init_name, - .upm_sensor_close = &upm_vk2828u7_close, + .upm_sensor_init_name = &upm_nmea_gps_init_name, + .upm_sensor_close = &upm_nmea_gps_close, }; static const upm_stream_ft sft = { - .upm_stream_read = upm_vk2828u7_read, - .upm_stream_write = upm_vk2828u7_write, - .upm_stream_data_available = upm_vk2828u7_data_available + .upm_stream_read = upm_nmea_gps_read, + .upm_stream_write = upm_nmea_gps_write, + .upm_stream_data_available = upm_nmea_gps_data_available }; -const void* upm_vk2828u7_get_ft(upm_sensor_t sensor_type) +const void* upm_nmea_gps_get_ft(upm_sensor_t sensor_type) { switch(sensor_type) { @@ -70,27 +70,27 @@ const void* upm_vk2828u7_get_ft(upm_sensor_t sensor_type) } } -void* upm_vk2828u7_init_name() +void* upm_nmea_gps_init_name() { return NULL; } -void upm_vk2828u7_close(void *dev) +void upm_nmea_gps_close(void *dev) { - vk2828u7_close((vk2828u7_context)dev); + nmea_gps_close((nmea_gps_context)dev); } -int upm_vk2828u7_read(void *dev, char *buffer, int len) +int upm_nmea_gps_read(void *dev, char *buffer, int len) { - return vk2828u7_read((vk2828u7_context)dev, buffer, len); + return nmea_gps_read((nmea_gps_context)dev, buffer, len); } -int upm_vk2828u7_write(void *dev, char *buffer, int len) +int upm_nmea_gps_write(void *dev, char *buffer, int len) { - return vk2828u7_write((vk2828u7_context)dev, buffer, len); + return nmea_gps_write((nmea_gps_context)dev, buffer, len); } -bool upm_vk2828u7_data_available(void *dev, unsigned int timeout) +bool upm_nmea_gps_data_available(void *dev, unsigned int timeout) { - return vk2828u7_data_available((vk2828u7_context)dev, timeout); + return nmea_gps_data_available((nmea_gps_context)dev, timeout); } diff --git a/src/vk2828u7/pyupm_vk2828u7.i b/src/nmea_gps/pyupm_nmea_gps.i similarity index 66% rename from src/vk2828u7/pyupm_vk2828u7.i rename to src/nmea_gps/pyupm_nmea_gps.i index a3cb1970..c130c801 100644 --- a/src/vk2828u7/pyupm_vk2828u7.i +++ b/src/nmea_gps/pyupm_nmea_gps.i @@ -1,13 +1,13 @@ // Include doxygen-generated documentation %include "pyupm_doxy2swig.i" -%module pyupm_vk2828u7 +%module pyupm_nmea_gps %include "../upm.i" %include "std_string.i" %feature("autodoc", "3"); -%include "vk2828u7.hpp" +%include "nmea_gps.hpp" %{ - #include "vk2828u7.hpp" + #include "nmea_gps.hpp" %} diff --git a/src/vk2828u7/CMakeLists.txt b/src/vk2828u7/CMakeLists.txt deleted file mode 100644 index 16a7e00d..00000000 --- a/src/vk2828u7/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -upm_mixed_module_init (NAME vk2828u7 - DESCRIPTION "upm dfrobot VK2828u7/NMEA serial GPS sensor" - C_HDR vk2828u7.h - C_SRC vk2828u7.c - CPP_HDR vk2828u7.hpp - CPP_SRC vk2828u7.cxx - FTI_SRC vk2828u7_fti.c - CPP_WRAPS_C - REQUIRES mraa) diff --git a/src/vk2828u7/jsupm_vk2828u7.i b/src/vk2828u7/jsupm_vk2828u7.i deleted file mode 100644 index 4b78e13e..00000000 --- a/src/vk2828u7/jsupm_vk2828u7.i +++ /dev/null @@ -1,9 +0,0 @@ -%module jsupm_vk2828u7 -%include "../upm.i" -%include "std_string.i" - -%include "vk2828u7.hpp" -%{ - #include "vk2828u7.hpp" -%} -