====== GPS plugin ====== ===== Functions ===== |gps::parse(OPTION-PARAM, DISPLAY-PARAM)|return gps information based on your parameter| This plugin has only 1 function (gps::parse) with 2 parameter. Here is a description of the parameter: PARAMETER 1 #define SHOW_ALTITUDE 0x000000001 alt:500 #define SHOW_SPEED 0x000000010 spd:30 #define SHOW_COURSE 0x000000100 dir:NO #define SHOW_SATELLITES 0x000001000 sat:4 #define SHOW_QUALITY 0x000010000 qua:1 #define SHOW_STATUS 0x000100000 sta:V (V=VOID, A=Active) #define SHOW_TIME_UTC 0x001000000 utc:113459 #define SHOW_DATE 0x010000000 dat:190204 (19.02.2004) PARAMETER 2 #define OPTION_NO_PREFIX 0x000000001 disable prefix (example, instead of "alt:500" it displays "500" #define OPTION_SPEED_IN_KNOTS 0x000000010 when use the SHOW_SPEED option, display speed in knots instead in km/h #define OPTION_RAW_NMEA 0x000000100 outputs the parsed nmea string, only valid when EMULATE is not defined! #define OPTION_GET_BUFFERDATA 0x000001000 when you define more than 1 gps widget each widget will get updates and cause some ugly side effects, specially when you display the time. by enabling this option, the widget **will not read any nmea data from the serial port**. KEEP IN MIND that there must be ONE widget which get buffered data (means read data from the p #define SHOW_NMEA_STATUS 0x010000000 OK:0033/Error:0002/Incomplete:0002 This is useful for debugging, display the nmea packet counter you need to specify the numbers and not the option name. Examples Examples: - gps::parse('0x000000011','0') will display the altitude and speed -> alt:500 spd:43 - gps::parse('0x000001100','0') will display the course and the numbers of satellites -> dir:NO sat:3 - gps::parse('0x000000001','0x01') will display the speed without prefix -> 50 - gps::parse('0x000000001','0x01') will display the speed in knots without prefix -> 27 you need to define your **SERIAL PORT** with the evoriement variable GPS_PORT: # export GPS_PORT=/dev/ttyUSB1 ===== example config ===== Here is my (michu / neophob.com) gps widget config: Widget gps-test1 { class 'Text' expression gps::parse('0x0000111','0') width 20 update tack align 'C' } Widget gps-test2 { class 'Text' expression gps::parse('0x10001000','0x01') width 20 update tack align 'C' } Widget gps-test3 { class 'Text' prefix 'GPS/' expression gps::parse('0x011111111','0') width 20 update tack align 'M' speed 250 } This looks like this when using ncurses as output: # ./lcd4linux -F -vv -q ┌────────────────────┐ │ │ │GPS/lt:545 spd:1 dir│ << gps-test3, scrolling all gps information │alt:545 spd:1 dir:N │ << gps-test1, 3 values │ 8 191194 │ << gps-test2, here is the prefix disbled (2nd parameter) └────────────────────┘ An overview with all possible GPS options: ┌────────────────────────┐ │ │ │ utc:165118 dat:190706 │ │ alt:23 spd:0 dir:N │ │ sat:6 qua:1 sta:A │ └────────────────────────┘ ===== Additional info ===== This plugin tries to connect per default to the gps device at /dev/usb/tts/1. If your GPS device is connected to another device you can use the environment variable GPS_PORT.\\\ For example //export GPS_PORT=/dev/tty/2//\\\ \\\ There is also an emulator mode, so you dont need a physical GPS device, instead plugin_gps.c uses a nmea string. This is usefull for testing. You may enable the EMULATOR mode by uncommenting the //#define EMULATE// in the plugin_gps.c file. You may also alter the nmea string. ===== Dev ===== You need libnmeap to compile this plugin, src: [[http://www.dmh2000.com/nmea/nmeap.shtml]]. \\\ If you want more information about this plugin or a openwrt binary visit [[http://www.neophob.com/]].\\\ Cheers Michu at neophob dot com\\\ ===== DEBUG ===== If you need to find out, why your gps device do not work with this plugin, follow this guide: 1) add a new debug widget: Widget gps-debug { class 'Text' expression gps::parse('0x1','0x000011110') width 20 update 1000 align 'L' } and add it to your layout 2) export your device port: root@OpenWrt:/# export GPS_PORT=/dev/ttyUSB1 3) run lcd4linux in debug mode: root@OpenWrt:/# lcd4linux -vv -F -q Version 0.10.2-SVN-796 starting <...> plugin_gps.c: [[:GPS]]: v0.31 plugin_gps.c: [[:GPS]]: Using port /dev/ttyUSB1 at 4800 baud plugin_gps.c: [[:GPS]]: GPS parser prepared... [[:KVV]] Using station 89 [[:KVV]] Using default port 80 [[:KVV]] Using default refresh interval of 60 seconds [[:KVV]] Default abbreviation setting: off plugin_mpd.c: [[:MPD]] v0.5, check env variables MPD_HOST, MPD_PORT plugin_mpd.c: [[:MPD]] Using host and port <6600> lcd4linux.c: initializing driver Crystalfontz Crystalfontz: $Rev: 840 $ Crystalfontz: using model '634' Crystalfontz: using port '/dev/ttyUSB0' at 19200 baud Crystalfontz: reserving 1 of 8 user-defined characters for icons Crystalfontz: using 0 GPI's and 0 GPO's initializing layout 'L20x4' lcd4linux.c: starting main loop plugin_gps.c: [[:GPS]] debug: read 78 bytes from GPS device plugin_gps.c: [[:GPS]] debug: OK:000/Er:000/In:000 plugin_gps.c: [[:GPS]] debug: backBuffer: < > plugin_gps.c: [[:GPS]] debug: submit: <$GPGGA,024210.406,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,0.0,M,0.0,0000*71 > plugin_gps.c: [[:GPS]] debug: OK:000/Er:000/In:000 plugin_gps.c: [[:GPS]] debug: get gga callout plugin_gps.c: [[:GPS]] debug: read 42 bytes from GPS device plugin_gps.c: [[:GPS]] debug: OK:001/Er:000/In:000 plugin_gps.c: [[:GPS]] debug: backBuffer: < > plugin_gps.c: [[:GPS]] debug: submit: <$GPGSA,A,1,,,,,,,,,,,,,50.0,50.0,50.0*05 > plugin_gps.c: [[:GPS]] debug: OK:001/Er:000/In:000 plugin_gps.c: [[:GPS]] debug: read 60 bytes from GPS device plugin_gps.c: [[:GPS]] debug: OK:002/Er:000/In:000 plugin_gps.c: [[:GPS]] debug: backBuffer: < > check the line "plugin_gps.c: [[:GPS]] debug: OK:000/Er:000/In:000" as this line will print out all the received nmea packets.