├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── datasheet ├── S7678G_Commands_Set_Reference_1.6.5.pdf └── S76G_Product_Brief_0.5.pdf ├── docs ├── CHANGELOG_8md.html ├── S7XG_8cpp.html ├── S7XG_8cpp_source.html ├── S7XG_8h.html ├── S7XG_8h_source.html ├── annotated.html ├── bc_s.png ├── bdwn.png ├── classS7XG.html ├── classes.html ├── closed.png ├── dir_68267d1309a1af8e8297ef4c3efbcdba.html ├── doc.png ├── doxygen.css ├── doxygen.png ├── dynsections.js ├── files.html ├── folderclosed.png ├── folderopen.png ├── functions.html ├── functions_func.html ├── functions_vars.html ├── globals.html ├── globals_defs.html ├── globals_eval.html ├── globals_vars.html ├── index.html ├── jquery.js ├── md_CHANGELOG.html ├── menu.js ├── menudata.js ├── nav_f.png ├── nav_g.png ├── nav_h.png ├── open.png ├── pages.html ├── search │ ├── all_0.html │ ├── all_0.js │ ├── all_1.html │ ├── all_1.js │ ├── all_2.html │ ├── all_2.js │ ├── all_3.html │ ├── all_3.js │ ├── all_4.html │ ├── all_4.js │ ├── all_5.html │ ├── all_5.js │ ├── all_6.html │ ├── all_6.js │ ├── all_7.html │ ├── all_7.js │ ├── all_8.html │ ├── all_8.js │ ├── all_9.html │ ├── all_9.js │ ├── all_a.html │ ├── all_a.js │ ├── all_b.html │ ├── all_b.js │ ├── all_c.html │ ├── all_c.js │ ├── all_d.html │ ├── all_d.js │ ├── all_e.html │ ├── all_e.js │ ├── all_f.html │ ├── all_f.js │ ├── classes_0.html │ ├── classes_0.js │ ├── classes_1.html │ ├── classes_1.js │ ├── close.png │ ├── defines_0.html │ ├── defines_0.js │ ├── enumvalues_0.html │ ├── enumvalues_0.js │ ├── files_0.html │ ├── files_0.js │ ├── files_1.html │ ├── files_1.js │ ├── functions_0.html │ ├── functions_0.js │ ├── functions_1.html │ ├── functions_1.js │ ├── functions_2.html │ ├── functions_2.js │ ├── functions_3.html │ ├── functions_3.js │ ├── functions_4.html │ ├── functions_4.js │ ├── functions_5.html │ ├── functions_5.js │ ├── functions_6.html │ ├── functions_6.js │ ├── functions_7.html │ ├── functions_7.js │ ├── functions_8.html │ ├── functions_8.js │ ├── functions_9.html │ ├── functions_9.js │ ├── mag_sel.png │ ├── nomatches.html │ ├── pages_0.html │ ├── pages_0.js │ ├── search.css │ ├── search.js │ ├── search_l.png │ ├── search_m.png │ ├── search_r.png │ ├── searchdata.js │ ├── variables_0.html │ ├── variables_0.js │ ├── variables_1.html │ ├── variables_1.js │ ├── variables_2.html │ ├── variables_2.js │ ├── variables_3.html │ ├── variables_3.js │ ├── variables_4.html │ ├── variables_4.js │ ├── variables_5.html │ ├── variables_5.js │ ├── variables_6.html │ ├── variables_6.js │ ├── variables_7.html │ ├── variables_7.js │ ├── variables_8.html │ └── variables_8.js ├── splitbar.png ├── structgps__message__t.html ├── sync_off.png ├── sync_on.png ├── tab_a.png ├── tab_b.png ├── tab_h.png ├── tab_s.png └── tabs.css ├── doxygen.cfg ├── examples ├── build_all.sh ├── gps_auto │ ├── gps_auto.ino │ └── platformio.ini ├── gps_basic │ ├── gps_basic.ino │ └── platformio.ini ├── lorawan_abp │ ├── lorawan_abp.ino │ └── platformio.ini ├── lorawan_otaa │ ├── lorawan_otaa.ino │ └── platformio.ini ├── module_info │ ├── module_info.ino │ └── platformio.ini └── serial_bridge │ ├── platformio.ini │ └── serial_bridge.ino ├── keywords.txt ├── library.json ├── library.properties ├── pre-commit └── src ├── S7XG.cpp └── S7XG.h /.gitignore: -------------------------------------------------------------------------------- 1 | # Precompiled Headers 2 | *.gch 3 | *.pch 4 | 5 | # PlatformIO folders 6 | .pio* 7 | 8 | # Project files 9 | credentials.h 10 | .vscode 11 | 12 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | - '2.7' 4 | sudo: false 5 | cache: 6 | directories: 7 | - "~/.platformio" 8 | install: 9 | - pip install -U platformio 10 | script: 11 | - pushd examples/gps_basic && pio run && popd 12 | - pushd examples/gps_auto && pio run && popd 13 | - pushd examples/lorawan_abp && pio run && popd 14 | - pushd examples/lorawan_otaa && pio run && popd 15 | - pushd examples/module_info && pio run && popd 16 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # S7XG change log 2 | 3 | The format is based on [Keep a Changelog](http://keepachangelog.com/) 4 | and this project adheres to [Semantic Versioning](http://semver.org/). 5 | 6 | ## [0.2.0] Unreleased 7 | ### Added 8 | - Travis builds 9 | - Parsing GPS response 10 | - GPS auto mode 11 | - New commands: 12 | - macJoined 13 | - macRetries, 14 | - macSync, 15 | - macChannelFrequency, 16 | - macUpCounter, 17 | - macDownCounter, 18 | - macClass, 19 | - gpsReset, 20 | - gpsCycle, 21 | - gpsSystem and 22 | - gpsStart 23 | 24 | ### Fixed 25 | - Several codacy fixes 26 | - Module reset 27 | 28 | ### Changed 29 | - Update documentation 30 | 31 | ## [0.1.0] 2019-09-02 32 | Initial version -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | 9 | This version of the GNU Lesser General Public License incorporates 10 | the terms and conditions of version 3 of the GNU General Public 11 | License, supplemented by the additional permissions listed below. 12 | 13 | 0. Additional Definitions. 14 | 15 | As used herein, "this License" refers to version 3 of the GNU Lesser 16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU 17 | General Public License. 18 | 19 | "The Library" refers to a covered work governed by this License, 20 | other than an Application or a Combined Work as defined below. 21 | 22 | An "Application" is any work that makes use of an interface provided 23 | by the Library, but which is not otherwise based on the Library. 24 | Defining a subclass of a class defined by the Library is deemed a mode 25 | of using an interface provided by the Library. 26 | 27 | A "Combined Work" is a work produced by combining or linking an 28 | Application with the Library. The particular version of the Library 29 | with which the Combined Work was made is also called the "Linked 30 | Version". 31 | 32 | The "Minimal Corresponding Source" for a Combined Work means the 33 | Corresponding Source for the Combined Work, excluding any source code 34 | for portions of the Combined Work that, considered in isolation, are 35 | based on the Application, and not on the Linked Version. 36 | 37 | The "Corresponding Application Code" for a Combined Work means the 38 | object code and/or source code for the Application, including any data 39 | and utility programs needed for reproducing the Combined Work from the 40 | Application, but excluding the System Libraries of the Combined Work. 41 | 42 | 1. Exception to Section 3 of the GNU GPL. 43 | 44 | You may convey a covered work under sections 3 and 4 of this License 45 | without being bound by section 3 of the GNU GPL. 46 | 47 | 2. Conveying Modified Versions. 48 | 49 | If you modify a copy of the Library, and, in your modifications, a 50 | facility refers to a function or data to be supplied by an Application 51 | that uses the facility (other than as an argument passed when the 52 | facility is invoked), then you may convey a copy of the modified 53 | version: 54 | 55 | a) under this License, provided that you make a good faith effort to 56 | ensure that, in the event an Application does not supply the 57 | function or data, the facility still operates, and performs 58 | whatever part of its purpose remains meaningful, or 59 | 60 | b) under the GNU GPL, with none of the additional permissions of 61 | this License applicable to that copy. 62 | 63 | 3. Object Code Incorporating Material from Library Header Files. 64 | 65 | The object code form of an Application may incorporate material from 66 | a header file that is part of the Library. You may convey such object 67 | code under terms of your choice, provided that, if the incorporated 68 | material is not limited to numerical parameters, data structure 69 | layouts and accessors, or small macros, inline functions and templates 70 | (ten or fewer lines in length), you do both of the following: 71 | 72 | a) Give prominent notice with each copy of the object code that the 73 | Library is used in it and that the Library and its use are 74 | covered by this License. 75 | 76 | b) Accompany the object code with a copy of the GNU GPL and this license 77 | document. 78 | 79 | 4. Combined Works. 80 | 81 | You may convey a Combined Work under terms of your choice that, 82 | taken together, effectively do not restrict modification of the 83 | portions of the Library contained in the Combined Work and reverse 84 | engineering for debugging such modifications, if you also do each of 85 | the following: 86 | 87 | a) Give prominent notice with each copy of the Combined Work that 88 | the Library is used in it and that the Library and its use are 89 | covered by this License. 90 | 91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 92 | document. 93 | 94 | c) For a Combined Work that displays copyright notices during 95 | execution, include the copyright notice for the Library among 96 | these notices, as well as a reference directing the user to the 97 | copies of the GNU GPL and this license document. 98 | 99 | d) Do one of the following: 100 | 101 | 0) Convey the Minimal Corresponding Source under the terms of this 102 | License, and the Corresponding Application Code in a form 103 | suitable for, and under terms that permit, the user to 104 | recombine or relink the Application with a modified version of 105 | the Linked Version to produce a modified Combined Work, in the 106 | manner specified by section 6 of the GNU GPL for conveying 107 | Corresponding Source. 108 | 109 | 1) Use a suitable shared library mechanism for linking with the 110 | Library. A suitable mechanism is one that (a) uses at run time 111 | a copy of the Library already present on the user's computer 112 | system, and (b) will operate properly with a modified version 113 | of the Library that is interface-compatible with the Linked 114 | Version. 115 | 116 | e) Provide Installation Information, but only if you would otherwise 117 | be required to provide such information under section 6 of the 118 | GNU GPL, and only to the extent that such information is 119 | necessary to install and execute a modified version of the 120 | Combined Work produced by recombining or relinking the 121 | Application with a modified version of the Linked Version. (If 122 | you use option 4d0, the Installation Information must accompany 123 | the Minimal Corresponding Source and Corresponding Application 124 | Code. If you use option 4d1, you must provide the Installation 125 | Information in the manner specified by section 6 of the GNU GPL 126 | for conveying Corresponding Source.) 127 | 128 | 5. Combined Libraries. 129 | 130 | You may place library facilities that are a work based on the 131 | Library side by side in a single library together with other library 132 | facilities that are not Applications and are not covered by this 133 | License, and convey such a combined library under terms of your 134 | choice, if you do both of the following: 135 | 136 | a) Accompany the combined library with a copy of the same work based 137 | on the Library, uncombined with any other library facilities, 138 | conveyed under the terms of this License. 139 | 140 | b) Give prominent notice with the combined library that part of it 141 | is a work based on the Library, and explaining where to find the 142 | accompanying uncombined form of the same work. 143 | 144 | 6. Revised Versions of the GNU Lesser General Public License. 145 | 146 | The Free Software Foundation may publish revised and/or new versions 147 | of the GNU Lesser General Public License from time to time. Such new 148 | versions will be similar in spirit to the present version, but may 149 | differ in detail to address new problems or concerns. 150 | 151 | Each version is given a distinguishing version number. If the 152 | Library as you received it specifies that a certain numbered version 153 | of the GNU Lesser General Public License "or any later version" 154 | applies to it, you have the option of following the terms and 155 | conditions either of that published version or of any later version 156 | published by the Free Software Foundation. If the Library as you 157 | received it does not specify a version number of the GNU Lesser 158 | General Public License, you may choose any version of the GNU Lesser 159 | General Public License ever published by the Free Software Foundation. 160 | 161 | If the Library as you received it specifies that a proxy can decide 162 | whether future versions of the GNU Lesser General Public License shall 163 | apply, that proxy's public statement of acceptance of any version is 164 | permanent authorization for you to choose that version for the 165 | Library. 166 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # S7XG Library 2 | 3 | Arduino Library for the AcSIP S76G and S78G LoRaWAN (and GPS) chips. 4 | It will probably also work with the S76S and S78S (only LoRaWAN) chips. 5 | 6 | [![version](https://img.shields.io/badge/version-0.1.0-brightgreen.svg)](CHANGELOG.md) 7 | [![codacy](https://img.shields.io/codacy/grade/7dfaab5c9ca44b3191f47d29cc2b99fa/master.svg)](https://www.codacy.com/app/xoseperez/s7xg/dashboard) 8 | [![travis](https://travis-ci.org/xoseperez/s7xg.svg?branch=master)](https://travis-ci.org/xoseperez/s7xg) 9 | [![license](https://img.shields.io/github/license/xoseperez/s7xg.svg)](LICENSE) 10 |
11 | [![donate](https://img.shields.io/badge/donate-PayPal-blue.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=xose%2eperez%40gmail%2ecom&lc=US&no_note=0¤cy_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHostedGuest) 12 | [![twitter](https://img.shields.io/twitter/follow/xoseperez.svg?style=social)](https://twitter.com/intent/follow?screen_name=xoseperez) 13 | 14 | ## Description 15 | 16 | The [S7XG chips by AcSIP](http://www.acsip.com.tw/index.php?action=products&fid1=19) are high integrated chips with LoRaWAN and GPS (only the G series). 17 | 18 | The S76G/S78G integrates a Semtech SX1276 and a 32-bit ultra-low power Cortex M0+ MCU (STM32L073x), S76G supports global 868 MHz or 915 MHz ISM-Bands. (S78G supports 433MHz or 470 MHz by using SX1278 and the identical MCU with S76G). Besides, S76G/S78G contains a GPS chip – SONY CXD5603GF which is used to receive GPS/GPS+GLONASS signals for positioning. 19 | 20 | ## Dependencies 21 | 22 | Some examples are meant to be run on the [TTGO T-Watch]("http://s.click.aliexpress.com/e/mhONXf7S) [Aliexpress] with the [LoRa/GPS addon](http://s.click.aliexpress.com/e/oAJfgzJE) [Aliexpress]. These examples need the AXP202X library to manage the power management chip inside the watch and power the S7XG module. 23 | 24 | ## API Reference 25 | 26 | The `S7XG` class enables Arduino devices to interface the S7XG module using the manufacturer command set. Check the command set reference in the `datasheet` folder. 27 | The class is documented inline and the documentation is generated using [doxygen](http://www.doxygen.nl/) and stored in the `docs` folder. 28 | 29 | ## Examples 30 | 31 | ### Sending LPP-encoded payload to The Things Network using Activation-by-Personalisation 32 | 33 | This example uses the CayenneLPP library. There are several sources for this library but I recommend the ElectronicCats version here: https://github.com/ElectronicCats/CayenneLPP. 34 | 35 | ```c 36 | 37 | #include "S7XG.h" 38 | #include "CayenneLPP.h" 39 | 40 | HardwareSerial SerialS7XG(1); 41 | CayenneLPP lpp(32); 42 | S7XG s7xg; 43 | 44 | // LoRaWAN credentials as copied from TTN 45 | const char *devAddr = "26011433"; 46 | const char *nwkSKey = "5DE49A0F0C9649B8D466B9032DAAB331"; 47 | const char *appSKey = "EE0080DAB519CEF94E2EC83A110AA43A"; 48 | 49 | void setup() { 50 | 51 | // Init the hardware serial (this is ESP32 specific) 52 | SerialS7XG.begin(115200, SERIAL_8N1, 34, 33); 53 | 54 | // Init the S7XG module 55 | s7xg.begin(SerialS7XG); 56 | s7xg.macPower(14); 57 | s7xg.macDatarate(DATARATE_EU_SF7BW125); 58 | s7xg.macADR(false); 59 | 60 | // Join the network in ABP mode 61 | s7xg.macJoinABP(devAddr, nwkSKey, appSKey); 62 | 63 | } 64 | 65 | void loop() { 66 | 67 | // Build the payload using CayenneLPP 68 | lpp.reset(); 69 | lpp.addTemperature(1, 22.5); 70 | lpp.addBarometricPressure(2, 1073.21); 71 | lpp.addGPS(3, 52.37365, 4.88650, 2); 72 | 73 | // Sending the data 74 | s7xg.macSend(lpp.getBuffer(), lpp.getSize()); 75 | 76 | // Interval between messages 77 | delay(30000); 78 | 79 | } 80 | ``` 81 | 82 | There are more examples in the `examples` folder. 83 | 84 | ## TODO 85 | 86 | Future features: 87 | 88 | * Link budget check (mac set_linkchk) 89 | * Auto JOIN 90 | * Set delay, datarate and frequency of RX windows 91 | * Fine channel and band control 92 | * LBT support 93 | * Several LoRaWAN 1.0.2 features (dwell, EIRP,...) 94 | * GPS TTFF 95 | * Getters :) 96 | 97 | ## License 98 | 99 | Copyright (C) 2019 by Xose Pérez 100 | 101 | The S7XG library is free software: you can redistribute it and/or modify 102 | it under the terms of the GNU Lesser General Public License as published by 103 | the Free Software Foundation, either version 3 of the License, or 104 | (at your option) any later version. 105 | 106 | The S7XG library is distributed in the hope that it will be useful, 107 | but WITHOUT ANY WARRANTY; without even the implied warranty of 108 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 109 | GNU Lesser General Public License for more details. 110 | 111 | You should have received a copy of the GNU Lesser General Public License 112 | along with the S7XG library. If not, see . 113 | -------------------------------------------------------------------------------- /datasheet/S7678G_Commands_Set_Reference_1.6.5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/datasheet/S7678G_Commands_Set_Reference_1.6.5.pdf -------------------------------------------------------------------------------- /datasheet/S76G_Product_Brief_0.5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/datasheet/S76G_Product_Brief_0.5.pdf -------------------------------------------------------------------------------- /docs/CHANGELOG_8md.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | S7XG Library: CHANGELOG.md File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
S7XG Library 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 | 49 |
53 |
54 | 55 | 56 |
57 | 60 |
61 | 62 |
63 |
64 |
65 |
CHANGELOG.md File Reference
66 |
67 |
68 |
69 | 70 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /docs/S7XG_8cpp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | S7XG Library: src/S7XG.cpp File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
S7XG Library 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 | 49 |
53 |
54 | 55 | 56 |
57 | 60 |
61 | 62 | 66 |
67 |
68 |
69 |
S7XG.cpp File Reference
70 |
71 |
72 |
#include "S7XG.h"
73 |
74 |

Go to the source code of this file.

75 |
76 | 77 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /docs/annotated.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | S7XG Library: Data Structures 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
S7XG Library 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
Data Structures
66 |
67 |
68 |
Here are the data structures with brief descriptions:
69 | 70 | 71 | 72 |
 Cgps_message_t
 CS7XG
73 |
74 |
75 | 76 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /docs/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/bc_s.png -------------------------------------------------------------------------------- /docs/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/bdwn.png -------------------------------------------------------------------------------- /docs/classes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | S7XG Library: Data Structure Index 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
S7XG Library 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
Data Structure Index
66 |
67 |
68 |
g | s
69 | 70 | 73 | 74 | 75 | 76 |
  g  
71 |
  s  
72 |
gps_message_t   S7XG   
77 |
g | s
78 |
79 | 80 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /docs/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/closed.png -------------------------------------------------------------------------------- /docs/dir_68267d1309a1af8e8297ef4c3efbcdba.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | S7XG Library: src Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
S7XG Library 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 | 49 |
53 |
54 | 55 | 56 |
57 | 60 |
61 | 62 | 66 |
67 |
68 |
69 |
src Directory Reference
70 |
71 |
72 | 73 | 75 | 76 | 77 | 78 | 79 |

74 | Files

file  S7XG.cpp [code]
 
file  S7XG.h [code]
 
80 |
81 | 82 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /docs/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/doc.png -------------------------------------------------------------------------------- /docs/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/doxygen.png -------------------------------------------------------------------------------- /docs/dynsections.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the 3 | JavaScript code in this file. 4 | 5 | Copyright (C) 1997-2017 by Dimitri van Heesch 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program; if not, write to the Free Software Foundation, Inc., 19 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 | 21 | @licend The above is the entire license notice 22 | for the JavaScript code in this file 23 | */ 24 | function toggleVisibility(linkObj) 25 | { 26 | var base = $(linkObj).attr('id'); 27 | var summary = $('#'+base+'-summary'); 28 | var content = $('#'+base+'-content'); 29 | var trigger = $('#'+base+'-trigger'); 30 | var src=$(trigger).attr('src'); 31 | if (content.is(':visible')===true) { 32 | content.hide(); 33 | summary.show(); 34 | $(linkObj).addClass('closed').removeClass('opened'); 35 | $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); 36 | } else { 37 | content.show(); 38 | summary.hide(); 39 | $(linkObj).removeClass('closed').addClass('opened'); 40 | $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); 41 | } 42 | return false; 43 | } 44 | 45 | function updateStripes() 46 | { 47 | $('table.directory tr'). 48 | removeClass('even').filter(':visible:even').addClass('even'); 49 | } 50 | 51 | function toggleLevel(level) 52 | { 53 | $('table.directory tr').each(function() { 54 | var l = this.id.split('_').length-1; 55 | var i = $('#img'+this.id.substring(3)); 56 | var a = $('#arr'+this.id.substring(3)); 57 | if (l 2 | 3 | 4 | 5 | 6 | 7 | 8 | S7XG Library: File List 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
S7XG Library 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
File List
66 |
67 |
68 |
Here is a list of all files with brief descriptions:
69 |
[detail level 12]
70 | 71 | 72 | 73 |
  src
 S7XG.cpp
 S7XG.h
74 |
75 |
76 | 77 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /docs/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/folderclosed.png -------------------------------------------------------------------------------- /docs/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/folderopen.png -------------------------------------------------------------------------------- /docs/functions_vars.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | S7XG Library: Data Fields - Variables 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
S7XG Library 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |   108 |
109 | 110 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /docs/globals_defs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | S7XG Library: Globals 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
S7XG Library 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |  
    65 |
  • S7XG_DEBUG 66 | : S7XG.h 67 |
  • 68 |
  • S7XG_LONG_TIMEOUT 69 | : S7XG.h 70 |
  • 71 |
  • S7XG_RX_BUFFER_SIZE 72 | : S7XG.h 73 |
  • 74 |
  • S7XG_SHORT_TIMEOUT 75 | : S7XG.h 76 |
  • 77 |
  • S7XG_TX_BUFFER_SIZE 78 | : S7XG.h 79 |
  • 80 |
81 |
82 | 83 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /docs/globals_eval.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | S7XG Library: Globals 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
S7XG Library 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |   65 | 66 |

- s -

    67 |
  • S7XG_DR_SF10BW125_CN 68 | : S7XG.h 69 |
  • 70 |
  • S7XG_DR_SF10BW125_EU 71 | : S7XG.h 72 |
  • 73 |
  • S7XG_DR_SF10BW125_US 74 | : S7XG.h 75 |
  • 76 |
  • S7XG_DR_SF11BW125_CN 77 | : S7XG.h 78 |
  • 79 |
  • S7XG_DR_SF11BW125_EU 80 | : S7XG.h 81 |
  • 82 |
  • S7XG_DR_SF12BW125_CN 83 | : S7XG.h 84 |
  • 85 |
  • S7XG_DR_SF12BW125_EU 86 | : S7XG.h 87 |
  • 88 |
  • S7XG_DR_SF7BW125_CN 89 | : S7XG.h 90 |
  • 91 |
  • S7XG_DR_SF7BW125_EU 92 | : S7XG.h 93 |
  • 94 |
  • S7XG_DR_SF7BW125_US 95 | : S7XG.h 96 |
  • 97 |
  • S7XG_DR_SF7BW250_EU 98 | : S7XG.h 99 |
  • 100 |
  • S7XG_DR_SF8BW125_CN 101 | : S7XG.h 102 |
  • 103 |
  • S7XG_DR_SF8BW125_EU 104 | : S7XG.h 105 |
  • 106 |
  • S7XG_DR_SF8BW125_US 107 | : S7XG.h 108 |
  • 109 |
  • S7XG_DR_SF8BW500_US 110 | : S7XG.h 111 |
  • 112 |
  • S7XG_DR_SF9BW125_CN 113 | : S7XG.h 114 |
  • 115 |
  • S7XG_DR_SF9BW125_EU 116 | : S7XG.h 117 |
  • 118 |
  • S7XG_DR_SF9BW125_US 119 | : S7XG.h 120 |
  • 121 |
  • S7XG_GPS_FORMAT_IPSO 122 | : S7XG.h 123 |
  • 124 |
  • S7XG_GPS_FORMAT_KIWI 125 | : S7XG.h 126 |
  • 127 |
  • S7XG_GPS_FORMAT_RAW 128 | : S7XG.h 129 |
  • 130 |
  • S7XG_GPS_FORMAT_UTC_POS 131 | : S7XG.h 132 |
  • 133 |
  • S7XG_GPS_MODE_AUTO 134 | : S7XG.h 135 |
  • 136 |
  • S7XG_GPS_MODE_IDLE 137 | : S7XG.h 138 |
  • 139 |
  • S7XG_GPS_MODE_MANUAL 140 | : S7XG.h 141 |
  • 142 |
  • S7XG_GPS_START_COLD 143 | : S7XG.h 144 |
  • 145 |
  • S7XG_GPS_START_HOT 146 | : S7XG.h 147 |
  • 148 |
  • S7XG_GPS_START_WARM 149 | : S7XG.h 150 |
  • 151 |
  • S7XG_GPS_SYSTEM_GPS 152 | : S7XG.h 153 |
  • 154 |
  • S7XG_GPS_SYSTEM_HYBRID 155 | : S7XG.h 156 |
  • 157 |
  • S7XG_MAC_CLASS_A 158 | : S7XG.h 159 |
  • 160 |
  • S7XG_MAC_CLASS_C 161 | : S7XG.h 162 |
  • 163 |
164 |
165 | 166 | 171 | 172 | 173 | -------------------------------------------------------------------------------- /docs/globals_vars.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | S7XG Library: Globals 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
S7XG Library 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |  
    65 |
  • PROGMEM 66 | : S7XG.h 67 |
  • 68 |
69 |
70 | 71 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | S7XG Library: Main Page 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
S7XG Library 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
S7XG Library Documentation
66 |
67 |
68 |
69 | 70 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /docs/md_CHANGELOG.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | S7XG Library: S7XG change log 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
S7XG Library 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 | 49 |
53 |
54 | 55 | 56 |
57 | 60 |
61 | 62 |
63 |
64 |
65 |
S7XG change log
66 |
67 |
68 |

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

69 |

[0.2.0] Unreleased

70 |

Added

71 |
    72 |
  • Travis builds
  • 73 |
  • Parsing GPS response
  • 74 |
  • GPS auto mode
  • 75 |
  • New commands:
      76 |
    • macJoined
    • 77 |
    • macRetries,
    • 78 |
    • macSync,
    • 79 |
    • macChannelFrequency,
    • 80 |
    • macUpCounter,
    • 81 |
    • macDownCounter,
    • 82 |
    • macClass,
    • 83 |
    • gpsReset,
    • 84 |
    • gpsCycle,
    • 85 |
    • gpsSystem and
    • 86 |
    • gpsStart
    • 87 |
    88 |
  • 89 |
90 |


91 |

Fixed

92 |
    93 |
  • Several codacy fixes
  • 94 |
  • Module reset
  • 95 |
96 |

Changed

97 |
    98 |
  • Update documentation
  • 99 |
100 |

[0.1.0] 2019-09-02

101 |

Initial version

102 |
103 |
104 | 105 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /docs/menu.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the 3 | JavaScript code in this file. 4 | 5 | Copyright (C) 1997-2017 by Dimitri van Heesch 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program; if not, write to the Free Software Foundation, Inc., 19 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 | 21 | @licend The above is the entire license notice 22 | for the JavaScript code in this file 23 | */ 24 | function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { 25 | function makeTree(data,relPath) { 26 | var result=''; 27 | if ('children' in data) { 28 | result+=''; 35 | } 36 | return result; 37 | } 38 | 39 | $('#main-nav').append(makeTree(menudata,relPath)); 40 | $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); 41 | if (searchEnabled) { 42 | if (serverSide) { 43 | $('#main-menu').append('
  • '); 44 | } else { 45 | $('#main-menu').append('
  • '); 46 | } 47 | } 48 | $('#main-menu').smartmenus(); 49 | } 50 | /* @license-end */ 51 | -------------------------------------------------------------------------------- /docs/menudata.js: -------------------------------------------------------------------------------- 1 | /* 2 | @ @licstart The following is the entire license notice for the 3 | JavaScript code in this file. 4 | 5 | Copyright (C) 1997-2017 by Dimitri van Heesch 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program; if not, write to the Free Software Foundation, Inc., 19 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 | 21 | @licend The above is the entire license notice 22 | for the JavaScript code in this file 23 | */ 24 | var menudata={children:[ 25 | {text:"Main Page",url:"index.html"}, 26 | {text:"Related Pages",url:"pages.html"}, 27 | {text:"Data Structures",url:"annotated.html",children:[ 28 | {text:"Data Structures",url:"annotated.html"}, 29 | {text:"Data Structure Index",url:"classes.html"}, 30 | {text:"Data Fields",url:"functions.html",children:[ 31 | {text:"All",url:"functions.html",children:[ 32 | {text:"_",url:"functions.html#index__"}, 33 | {text:"b",url:"functions.html#index_b"}, 34 | {text:"d",url:"functions.html#index_d"}, 35 | {text:"f",url:"functions.html#index_f"}, 36 | {text:"g",url:"functions.html#index_g"}, 37 | {text:"h",url:"functions.html#index_h"}, 38 | {text:"l",url:"functions.html#index_l"}, 39 | {text:"m",url:"functions.html#index_m"}, 40 | {text:"p",url:"functions.html#index_p"}, 41 | {text:"r",url:"functions.html#index_r"}, 42 | {text:"s",url:"functions.html#index_s"}, 43 | {text:"t",url:"functions.html#index_t"}, 44 | {text:"u",url:"functions.html#index_u"}, 45 | {text:"w",url:"functions.html#index_w"}, 46 | {text:"y",url:"functions.html#index_y"}]}, 47 | {text:"Functions",url:"functions_func.html",children:[ 48 | {text:"_",url:"functions_func.html#index__"}, 49 | {text:"b",url:"functions_func.html#index_b"}, 50 | {text:"g",url:"functions_func.html#index_g"}, 51 | {text:"h",url:"functions_func.html#index_h"}, 52 | {text:"m",url:"functions_func.html#index_m"}, 53 | {text:"r",url:"functions_func.html#index_r"}, 54 | {text:"s",url:"functions_func.html#index_s"}, 55 | {text:"t",url:"functions_func.html#index_t"}, 56 | {text:"u",url:"functions_func.html#index_u"}, 57 | {text:"w",url:"functions_func.html#index_w"}]}, 58 | {text:"Variables",url:"functions_vars.html"}]}]}, 59 | {text:"Files",url:"files.html",children:[ 60 | {text:"File List",url:"files.html"}, 61 | {text:"Globals",url:"globals.html",children:[ 62 | {text:"All",url:"globals.html",children:[ 63 | {text:"p",url:"globals.html#index_p"}, 64 | {text:"s",url:"globals.html#index_s"}]}, 65 | {text:"Variables",url:"globals_vars.html"}, 66 | {text:"Enumerator",url:"globals_eval.html",children:[ 67 | {text:"s",url:"globals_eval.html#index_s"}]}, 68 | {text:"Macros",url:"globals_defs.html"}]}]}]} 69 | -------------------------------------------------------------------------------- /docs/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/nav_f.png -------------------------------------------------------------------------------- /docs/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/nav_g.png -------------------------------------------------------------------------------- /docs/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/nav_h.png -------------------------------------------------------------------------------- /docs/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/open.png -------------------------------------------------------------------------------- /docs/pages.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | S7XG Library: Related Pages 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 |
    20 | 21 | 22 | 23 | 27 | 28 | 29 |
    24 |
    S7XG Library 25 |
    26 |
    30 |
    31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
    49 | 50 |
    54 |
    55 | 56 | 57 |
    58 | 61 |
    62 | 63 |
    64 |
    65 |
    Related Pages
    66 |
    67 |
    68 |
    Here is a list of all related documentation pages:
    69 | 70 | 71 |
     S7XG change log
    72 |
    73 |
    74 | 75 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /docs/search/all_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_5fbuffer',['_buffer',['../classS7XG.html#a7f73f33bcc5fd1ee3541d1e46e2ca5c7',1,'S7XG']]], 4 | ['_5feui',['_eui',['../classS7XG.html#aa878e0f67d80dbed7e41e8abad94de4f',1,'S7XG']]], 5 | ['_5fflush',['_flush',['../classS7XG.html#a7fec98d6580a8de981f0d1a05b3a3c16',1,'S7XG']]], 6 | ['_5fnibble',['_nibble',['../classS7XG.html#a5a02cf17875d3220c466c00ed8db956c',1,'S7XG']]], 7 | ['_5fnice_5fdelay',['_nice_delay',['../classS7XG.html#ac38b6303b0496e406d6d7749f4f5c30e',1,'S7XG']]], 8 | ['_5freadline',['_readLine',['../classS7XG.html#aca7dfffad3213427fb97fbff13006a50',1,'S7XG']]], 9 | ['_5fsend',['_send',['../classS7XG.html#a3da4083e27730520439deec0a0d17c80',1,'S7XG']]], 10 | ['_5fsendandack',['_sendAndACK',['../classS7XG.html#a55d765b70f6f8fbc022c06416759abd9',1,'S7XG']]], 11 | ['_5fsendandreturn',['_sendAndReturn',['../classS7XG.html#adc103556e941a59460ae3686d6e10040',1,'S7XG']]], 12 | ['_5fstream',['_stream',['../classS7XG.html#a8027d596af2c2d5a9a38d26a3b085c84',1,'S7XG']]], 13 | ['_5fwait_5flonger',['_wait_longer',['../classS7XG.html#af5c25e29c61f56650ee6a987b78ee014',1,'S7XG']]] 14 | ]; 15 | -------------------------------------------------------------------------------- /docs/search/all_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['begin',['begin',['../classS7XG.html#ab0709504402e8979ac8ba6aacb3ad45f',1,'S7XG']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['changelog_2emd',['CHANGELOG.md',['../CHANGELOG_8md.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['day',['day',['../structgps__message__t.html#a6487e70a205919d32b497d5d0e6dbd8e',1,'gps_message_t']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['fix',['fix',['../structgps__message__t.html#a13eb78e08f1e3ee1756d42f4e5756320',1,'gps_message_t']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['geteui',['getEUI',['../classS7XG.html#acb17b3ecb8aaaa3254c3c9c29d0ce1ef',1,'S7XG']]], 4 | ['gethardware',['getHardware',['../classS7XG.html#a5a540525822d58b3226eb68504c1e1d6',1,'S7XG']]], 5 | ['getresponse',['getResponse',['../classS7XG.html#a374fe4f8aaa7ed0e4dd73e099d92f6f3',1,'S7XG']]], 6 | ['getversion',['getVersion',['../classS7XG.html#afde85c3dc8a5664b2c1f096b386f8219',1,'S7XG']]], 7 | ['gps_5fmessage_5ft',['gps_message_t',['../structgps__message__t.html',1,'']]], 8 | ['gpscycle',['gpsCycle',['../classS7XG.html#af495c81b555e897ca9b7da7f4afccc4d',1,'S7XG']]], 9 | ['gpsdata',['gpsData',['../classS7XG.html#a50dcf5ae222e45ed80d8059538389da1',1,'S7XG']]], 10 | ['gpsformat',['gpsFormat',['../classS7XG.html#a517469e32105d5b2ae6ebf69d60e9d13',1,'S7XG']]], 11 | ['gpsinit',['gpsInit',['../classS7XG.html#a9aad0fbc5873421fd98fdae6e1685dc0',1,'S7XG']]], 12 | ['gpsmode',['gpsMode',['../classS7XG.html#af620ad6eb6d003278de85f3d7e36a5cd',1,'S7XG::gpsMode(uint8_t mode)'],['../classS7XG.html#aa5cee2b653a444c1c1d52f4b5d04ef6d',1,'S7XG::gpsMode()']]], 13 | ['gpsport',['gpsPort',['../classS7XG.html#acd2ab973ae78e7710a1edd2efdce04da',1,'S7XG']]], 14 | ['gpsreset',['gpsReset',['../classS7XG.html#a30e569caddac0def18187e23995df914',1,'S7XG']]], 15 | ['gpssleep',['gpsSleep',['../classS7XG.html#ae93cb3a1c55e673944eca5a7585d2e4d',1,'S7XG']]], 16 | ['gpsstart',['gpsStart',['../classS7XG.html#a5fd96eb0db48aac341f87e70cc775748',1,'S7XG']]], 17 | ['gpssystem',['gpsSystem',['../classS7XG.html#a8132545ff6370735b34ff439dd9b86b9',1,'S7XG']]], 18 | ['gpswake',['gpsWake',['../classS7XG.html#adcd336eebc8a7f347cd84e83161d3e1d',1,'S7XG']]] 19 | ]; 20 | -------------------------------------------------------------------------------- /docs/search/all_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['hexlify',['hexlify',['../classS7XG.html#a7279759ffaa7d3f3291be3e77db965c9',1,'S7XG']]], 4 | ['hour',['hour',['../structgps__message__t.html#aa13852965a1e00fcbaf8fee0a446ea02',1,'gps_message_t']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/all_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['latitude',['latitude',['../structgps__message__t.html#a60a588afd27b006c3da35f71e095f66a',1,'gps_message_t']]], 4 | ['longitude',['longitude',['../structgps__message__t.html#abc187e2c1f521768c72085f2c46b5453',1,'gps_message_t']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/all_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['macadr',['macADR',['../classS7XG.html#abaaad457ef99e43602536c7550f63869',1,'S7XG']]], 4 | ['macband',['macBand',['../classS7XG.html#a93e16d19a2df59feb361a7149a7478fa',1,'S7XG']]], 5 | ['macchannelfrequency',['macChannelFrequency',['../classS7XG.html#a31d1793bdd5ada9627279c42efa42c36',1,'S7XG']]], 6 | ['macchannelstatus',['macChannelStatus',['../classS7XG.html#a96463e8eca7b366eecc4bc3963996a1e',1,'S7XG']]], 7 | ['macclass',['macClass',['../classS7XG.html#a6a249dd895a8a66cf916e7a5935a7dc0',1,'S7XG']]], 8 | ['macdatarate',['macDatarate',['../classS7XG.html#af572d5fc0eba9141dee60409bf6edb05',1,'S7XG']]], 9 | ['macdowncounter',['macDownCounter',['../classS7XG.html#a13eaac653762b6f8bca64ae405c51346',1,'S7XG::macDownCounter(uint32_t counter)'],['../classS7XG.html#a3e179ee9bc3f120011c50b6ca28b2c49',1,'S7XG::macDownCounter()']]], 10 | ['macdutycycle',['macDutyCycle',['../classS7XG.html#a72c4b23404ee5f7b7df9adee7cff102d',1,'S7XG']]], 11 | ['macjoinabp',['macJoinABP',['../classS7XG.html#acb23ebd9eff94494b8603527592efa89',1,'S7XG']]], 12 | ['macjoined',['macJoined',['../classS7XG.html#a32b291b1728cbef459689dd090ab2788',1,'S7XG']]], 13 | ['macjoinotaa',['macJoinOTAA',['../classS7XG.html#a2bf7ca24034b9a002b1eb6cb7a9843f2',1,'S7XG::macJoinOTAA(const char *deveui, const char *appeui, const char *appkey)'],['../classS7XG.html#afe73bd0d89f37aacbc23c70565679a96',1,'S7XG::macJoinOTAA(const char *appeui, const char *appkey)']]], 14 | ['macpower',['macPower',['../classS7XG.html#ad16a6bd80c2f1f8004d1099de9ee4bbb',1,'S7XG']]], 15 | ['macretries',['macRetries',['../classS7XG.html#af42eb730c3374220b25bf357fbf7df23',1,'S7XG']]], 16 | ['macsave',['macSave',['../classS7XG.html#aaf63a218198408566b6289d73a49fa89',1,'S7XG']]], 17 | ['macsend',['macSend',['../classS7XG.html#aeeccf71024da8c8ec402a682da351fc0',1,'S7XG::macSend(char *data, bool confirmed=false, uint8_t port=1)'],['../classS7XG.html#affd3d574e3119520baa783fa865e2f5b',1,'S7XG::macSend(uint8_t *data, uint8_t len, bool confirmed=false, uint8_t port=1)']]], 18 | ['macsync',['macSync',['../classS7XG.html#ad6e43e41245e49c1802f13fd8f7024e4',1,'S7XG']]], 19 | ['macupcounter',['macUpCounter',['../classS7XG.html#abfa773cf951702c2fe7e419761884d5c',1,'S7XG::macUpCounter(uint32_t counter)'],['../classS7XG.html#ab58ed1d764245747a57a2e4d111d7a29',1,'S7XG::macUpCounter()']]], 20 | ['minute',['minute',['../structgps__message__t.html#a9b7af5973e9a59ca633a6788b0638a52',1,'gps_message_t']]], 21 | ['month',['month',['../structgps__message__t.html#a709e6897ef9adb4d0346b06166134522',1,'gps_message_t']]] 22 | ]; 23 | -------------------------------------------------------------------------------- /docs/search/all_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['positioning',['positioning',['../structgps__message__t.html#aea7ab3311d100ad256754d500f96a6c9',1,'gps_message_t']]], 4 | ['progmem',['PROGMEM',['../S7XG_8h.html#a6526b39b3f37fbfb357e145faf08fb02',1,'S7XG.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/all_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['reset',['reset',['../classS7XG.html#aedf779b3cb55bb87c22604be1822c62b',1,'S7XG']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['s7xg_20change_20log',['S7XG change log',['../md_CHANGELOG.html',1,'']]], 4 | ['s7xg',['S7XG',['../classS7XG.html',1,'']]], 5 | ['s7xg_2ecpp',['S7XG.cpp',['../S7XG_8cpp.html',1,'']]], 6 | ['s7xg_2eh',['S7XG.h',['../S7XG_8h.html',1,'']]], 7 | ['s7xg_5fdebug',['S7XG_DEBUG',['../S7XG_8h.html#acf5a121329009c61e5e9099d782cf119',1,'S7XG.h']]], 8 | ['s7xg_5fdr_5fsf10bw125_5fcn',['S7XG_DR_SF10BW125_CN',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba700d547bf01a542f094376dd3acf7f86',1,'S7XG.h']]], 9 | ['s7xg_5fdr_5fsf10bw125_5feu',['S7XG_DR_SF10BW125_EU',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55bac80eac9757da7a5c668c9c4e2f41a531',1,'S7XG.h']]], 10 | ['s7xg_5fdr_5fsf10bw125_5fus',['S7XG_DR_SF10BW125_US',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba511c8511c4ccef2f23633ed78461920e',1,'S7XG.h']]], 11 | ['s7xg_5fdr_5fsf11bw125_5fcn',['S7XG_DR_SF11BW125_CN',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55bab506675ddb1ff9e73ab03f5962b1e0da',1,'S7XG.h']]], 12 | ['s7xg_5fdr_5fsf11bw125_5feu',['S7XG_DR_SF11BW125_EU',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad362c6619d932285de5b04e105f1a216',1,'S7XG.h']]], 13 | ['s7xg_5fdr_5fsf12bw125_5fcn',['S7XG_DR_SF12BW125_CN',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba1f5597d1fddd95206eef37259898720c',1,'S7XG.h']]], 14 | ['s7xg_5fdr_5fsf12bw125_5feu',['S7XG_DR_SF12BW125_EU',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8ba5fe0f6bb911f04b431482e995a99',1,'S7XG.h']]], 15 | ['s7xg_5fdr_5fsf7bw125_5fcn',['S7XG_DR_SF7BW125_CN',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba6fc160ddea933102a48b4211e6c71d40',1,'S7XG.h']]], 16 | ['s7xg_5fdr_5fsf7bw125_5feu',['S7XG_DR_SF7BW125_EU',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba9712bb3263e92fb9c4bd8e397a369759',1,'S7XG.h']]], 17 | ['s7xg_5fdr_5fsf7bw125_5fus',['S7XG_DR_SF7BW125_US',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba55ceb65babcd75240457d3f2703e8153',1,'S7XG.h']]], 18 | ['s7xg_5fdr_5fsf7bw250_5feu',['S7XG_DR_SF7BW250_EU',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba4af75c8365764e9cad3ca9987adec02a',1,'S7XG.h']]], 19 | ['s7xg_5fdr_5fsf8bw125_5fcn',['S7XG_DR_SF8BW125_CN',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba31f90cd578104a3692994221e5b658da',1,'S7XG.h']]], 20 | ['s7xg_5fdr_5fsf8bw125_5feu',['S7XG_DR_SF8BW125_EU',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55bafa5894bdf042369d67d47b7c3b68cf3c',1,'S7XG.h']]], 21 | ['s7xg_5fdr_5fsf8bw125_5fus',['S7XG_DR_SF8BW125_US',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf2615733d88180b725edd8de8262ba0f',1,'S7XG.h']]], 22 | ['s7xg_5fdr_5fsf8bw500_5fus',['S7XG_DR_SF8BW500_US',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad8bc1a176c5d5aad668aad1a40d5cfa7',1,'S7XG.h']]], 23 | ['s7xg_5fdr_5fsf9bw125_5fcn',['S7XG_DR_SF9BW125_CN',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba6ab73504eb61a8a77b36f9d9370dc4ce',1,'S7XG.h']]], 24 | ['s7xg_5fdr_5fsf9bw125_5feu',['S7XG_DR_SF9BW125_EU',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba0504ace2f56dbe0cc03cb437c1729a50',1,'S7XG.h']]], 25 | ['s7xg_5fdr_5fsf9bw125_5fus',['S7XG_DR_SF9BW125_US',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55bae0640cd585986120ac7a211c7ca808aa',1,'S7XG.h']]], 26 | ['s7xg_5fgps_5fformat_5fipso',['S7XG_GPS_FORMAT_IPSO',['../S7XG_8h.html#abc6126af1d45847bc59afa0aa3216b04a5a68cb1572518a4a8a1014fc72509129',1,'S7XG.h']]], 27 | ['s7xg_5fgps_5fformat_5fkiwi',['S7XG_GPS_FORMAT_KIWI',['../S7XG_8h.html#abc6126af1d45847bc59afa0aa3216b04aea6ea8b0b7354a9ee8cd7058688d86c8',1,'S7XG.h']]], 28 | ['s7xg_5fgps_5fformat_5fraw',['S7XG_GPS_FORMAT_RAW',['../S7XG_8h.html#abc6126af1d45847bc59afa0aa3216b04a8f47132bea8dd984c74a81369593a8aa',1,'S7XG.h']]], 29 | ['s7xg_5fgps_5fformat_5futc_5fpos',['S7XG_GPS_FORMAT_UTC_POS',['../S7XG_8h.html#abc6126af1d45847bc59afa0aa3216b04a85a13d6502664394937e1b890565dbdf',1,'S7XG.h']]], 30 | ['s7xg_5fgps_5fmode_5fauto',['S7XG_GPS_MODE_AUTO',['../S7XG_8h.html#a99fb83031ce9923c84392b4e92f956b5adca6064dd3625f947dceee3cd8b18d38',1,'S7XG.h']]], 31 | ['s7xg_5fgps_5fmode_5fidle',['S7XG_GPS_MODE_IDLE',['../S7XG_8h.html#a99fb83031ce9923c84392b4e92f956b5a53f214c8a950ef247ebc24bb34853e46',1,'S7XG.h']]], 32 | ['s7xg_5fgps_5fmode_5fmanual',['S7XG_GPS_MODE_MANUAL',['../S7XG_8h.html#a99fb83031ce9923c84392b4e92f956b5ac6833f74d482f8228b10af11ad979ef3',1,'S7XG.h']]], 33 | ['s7xg_5fgps_5fstart_5fcold',['S7XG_GPS_START_COLD',['../S7XG_8h.html#adc29c2ff13d900c2f185ee95427fb06ca52fff90b9bb3112b665cb88a3118e8fc',1,'S7XG.h']]], 34 | ['s7xg_5fgps_5fstart_5fhot',['S7XG_GPS_START_HOT',['../S7XG_8h.html#adc29c2ff13d900c2f185ee95427fb06ca6acf5bcf2df95d11757b61a39bdcc028',1,'S7XG.h']]], 35 | ['s7xg_5fgps_5fstart_5fwarm',['S7XG_GPS_START_WARM',['../S7XG_8h.html#adc29c2ff13d900c2f185ee95427fb06ca9b50eafbac4faf7e715f228c35056823',1,'S7XG.h']]], 36 | ['s7xg_5fgps_5fsystem_5fgps',['S7XG_GPS_SYSTEM_GPS',['../S7XG_8h.html#a61dadd085c1777f559549e05962b2c9ea2f52416006508796789bb97f738aa634',1,'S7XG.h']]], 37 | ['s7xg_5fgps_5fsystem_5fhybrid',['S7XG_GPS_SYSTEM_HYBRID',['../S7XG_8h.html#a61dadd085c1777f559549e05962b2c9eace21f1959312af2e4e6ca3404652bb13',1,'S7XG.h']]], 38 | ['s7xg_5flong_5ftimeout',['S7XG_LONG_TIMEOUT',['../S7XG_8h.html#a97dad10758a59a69be1c803dee9435f5',1,'S7XG.h']]], 39 | ['s7xg_5fmac_5fclass_5fa',['S7XG_MAC_CLASS_A',['../S7XG_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a06746b5d4398b22ae63040db7f1e7eb4',1,'S7XG.h']]], 40 | ['s7xg_5fmac_5fclass_5fc',['S7XG_MAC_CLASS_C',['../S7XG_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a5dea7038d13ee2f98240a578f948b222',1,'S7XG.h']]], 41 | ['s7xg_5frx_5fbuffer_5fsize',['S7XG_RX_BUFFER_SIZE',['../S7XG_8h.html#a577ec7a13467f59908439b8533199ab8',1,'S7XG.h']]], 42 | ['s7xg_5fshort_5ftimeout',['S7XG_SHORT_TIMEOUT',['../S7XG_8h.html#aa9b4c3b8bd639811f4ddf40be5c1ab4e',1,'S7XG.h']]], 43 | ['s7xg_5ftx_5fbuffer_5fsize',['S7XG_TX_BUFFER_SIZE',['../S7XG_8h.html#a2fbf00054d78227dd8417393e1cd6bda',1,'S7XG.h']]], 44 | ['second',['second',['../structgps__message__t.html#ae32f197cb056186507b05ef1869355b4',1,'gps_message_t']]], 45 | ['sleep',['sleep',['../classS7XG.html#a192fd4077e897483a568ad987dd480e8',1,'S7XG']]] 46 | ]; 47 | -------------------------------------------------------------------------------- /docs/search/all_c.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['txcycle',['txCycle',['../classS7XG.html#acf59d41dbba8643c2659b11da5918692',1,'S7XG']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_d.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['unhexlify',['unhexlify',['../classS7XG.html#a5365086da88ec809d78ff43ee3056813',1,'S7XG']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_e.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['wake',['wake',['../classS7XG.html#acb47804e3f032bcaced019cf3c630f98',1,'S7XG']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_f.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/all_f.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['year',['year',['../structgps__message__t.html#af94de5d6a8ed47a626eea939fce42dfd',1,'gps_message_t']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/classes_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/classes_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['gps_5fmessage_5ft',['gps_message_t',['../structgps__message__t.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/classes_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/classes_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['s7xg',['S7XG',['../classS7XG.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/search/close.png -------------------------------------------------------------------------------- /docs/search/defines_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/defines_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['s7xg_5fdebug',['S7XG_DEBUG',['../S7XG_8h.html#acf5a121329009c61e5e9099d782cf119',1,'S7XG.h']]], 4 | ['s7xg_5flong_5ftimeout',['S7XG_LONG_TIMEOUT',['../S7XG_8h.html#a97dad10758a59a69be1c803dee9435f5',1,'S7XG.h']]], 5 | ['s7xg_5frx_5fbuffer_5fsize',['S7XG_RX_BUFFER_SIZE',['../S7XG_8h.html#a577ec7a13467f59908439b8533199ab8',1,'S7XG.h']]], 6 | ['s7xg_5fshort_5ftimeout',['S7XG_SHORT_TIMEOUT',['../S7XG_8h.html#aa9b4c3b8bd639811f4ddf40be5c1ab4e',1,'S7XG.h']]], 7 | ['s7xg_5ftx_5fbuffer_5fsize',['S7XG_TX_BUFFER_SIZE',['../S7XG_8h.html#a2fbf00054d78227dd8417393e1cd6bda',1,'S7XG.h']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /docs/search/enumvalues_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/enumvalues_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['s7xg_5fdr_5fsf10bw125_5fcn',['S7XG_DR_SF10BW125_CN',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba700d547bf01a542f094376dd3acf7f86',1,'S7XG.h']]], 4 | ['s7xg_5fdr_5fsf10bw125_5feu',['S7XG_DR_SF10BW125_EU',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55bac80eac9757da7a5c668c9c4e2f41a531',1,'S7XG.h']]], 5 | ['s7xg_5fdr_5fsf10bw125_5fus',['S7XG_DR_SF10BW125_US',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba511c8511c4ccef2f23633ed78461920e',1,'S7XG.h']]], 6 | ['s7xg_5fdr_5fsf11bw125_5fcn',['S7XG_DR_SF11BW125_CN',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55bab506675ddb1ff9e73ab03f5962b1e0da',1,'S7XG.h']]], 7 | ['s7xg_5fdr_5fsf11bw125_5feu',['S7XG_DR_SF11BW125_EU',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad362c6619d932285de5b04e105f1a216',1,'S7XG.h']]], 8 | ['s7xg_5fdr_5fsf12bw125_5fcn',['S7XG_DR_SF12BW125_CN',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba1f5597d1fddd95206eef37259898720c',1,'S7XG.h']]], 9 | ['s7xg_5fdr_5fsf12bw125_5feu',['S7XG_DR_SF12BW125_EU',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8ba5fe0f6bb911f04b431482e995a99',1,'S7XG.h']]], 10 | ['s7xg_5fdr_5fsf7bw125_5fcn',['S7XG_DR_SF7BW125_CN',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba6fc160ddea933102a48b4211e6c71d40',1,'S7XG.h']]], 11 | ['s7xg_5fdr_5fsf7bw125_5feu',['S7XG_DR_SF7BW125_EU',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba9712bb3263e92fb9c4bd8e397a369759',1,'S7XG.h']]], 12 | ['s7xg_5fdr_5fsf7bw125_5fus',['S7XG_DR_SF7BW125_US',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba55ceb65babcd75240457d3f2703e8153',1,'S7XG.h']]], 13 | ['s7xg_5fdr_5fsf7bw250_5feu',['S7XG_DR_SF7BW250_EU',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba4af75c8365764e9cad3ca9987adec02a',1,'S7XG.h']]], 14 | ['s7xg_5fdr_5fsf8bw125_5fcn',['S7XG_DR_SF8BW125_CN',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba31f90cd578104a3692994221e5b658da',1,'S7XG.h']]], 15 | ['s7xg_5fdr_5fsf8bw125_5feu',['S7XG_DR_SF8BW125_EU',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55bafa5894bdf042369d67d47b7c3b68cf3c',1,'S7XG.h']]], 16 | ['s7xg_5fdr_5fsf8bw125_5fus',['S7XG_DR_SF8BW125_US',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf2615733d88180b725edd8de8262ba0f',1,'S7XG.h']]], 17 | ['s7xg_5fdr_5fsf8bw500_5fus',['S7XG_DR_SF8BW500_US',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad8bc1a176c5d5aad668aad1a40d5cfa7',1,'S7XG.h']]], 18 | ['s7xg_5fdr_5fsf9bw125_5fcn',['S7XG_DR_SF9BW125_CN',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba6ab73504eb61a8a77b36f9d9370dc4ce',1,'S7XG.h']]], 19 | ['s7xg_5fdr_5fsf9bw125_5feu',['S7XG_DR_SF9BW125_EU',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba0504ace2f56dbe0cc03cb437c1729a50',1,'S7XG.h']]], 20 | ['s7xg_5fdr_5fsf9bw125_5fus',['S7XG_DR_SF9BW125_US',['../S7XG_8h.html#a06fc87d81c62e9abb8790b6e5713c55bae0640cd585986120ac7a211c7ca808aa',1,'S7XG.h']]], 21 | ['s7xg_5fgps_5fformat_5fipso',['S7XG_GPS_FORMAT_IPSO',['../S7XG_8h.html#abc6126af1d45847bc59afa0aa3216b04a5a68cb1572518a4a8a1014fc72509129',1,'S7XG.h']]], 22 | ['s7xg_5fgps_5fformat_5fkiwi',['S7XG_GPS_FORMAT_KIWI',['../S7XG_8h.html#abc6126af1d45847bc59afa0aa3216b04aea6ea8b0b7354a9ee8cd7058688d86c8',1,'S7XG.h']]], 23 | ['s7xg_5fgps_5fformat_5fraw',['S7XG_GPS_FORMAT_RAW',['../S7XG_8h.html#abc6126af1d45847bc59afa0aa3216b04a8f47132bea8dd984c74a81369593a8aa',1,'S7XG.h']]], 24 | ['s7xg_5fgps_5fformat_5futc_5fpos',['S7XG_GPS_FORMAT_UTC_POS',['../S7XG_8h.html#abc6126af1d45847bc59afa0aa3216b04a85a13d6502664394937e1b890565dbdf',1,'S7XG.h']]], 25 | ['s7xg_5fgps_5fmode_5fauto',['S7XG_GPS_MODE_AUTO',['../S7XG_8h.html#a99fb83031ce9923c84392b4e92f956b5adca6064dd3625f947dceee3cd8b18d38',1,'S7XG.h']]], 26 | ['s7xg_5fgps_5fmode_5fidle',['S7XG_GPS_MODE_IDLE',['../S7XG_8h.html#a99fb83031ce9923c84392b4e92f956b5a53f214c8a950ef247ebc24bb34853e46',1,'S7XG.h']]], 27 | ['s7xg_5fgps_5fmode_5fmanual',['S7XG_GPS_MODE_MANUAL',['../S7XG_8h.html#a99fb83031ce9923c84392b4e92f956b5ac6833f74d482f8228b10af11ad979ef3',1,'S7XG.h']]], 28 | ['s7xg_5fgps_5fstart_5fcold',['S7XG_GPS_START_COLD',['../S7XG_8h.html#adc29c2ff13d900c2f185ee95427fb06ca52fff90b9bb3112b665cb88a3118e8fc',1,'S7XG.h']]], 29 | ['s7xg_5fgps_5fstart_5fhot',['S7XG_GPS_START_HOT',['../S7XG_8h.html#adc29c2ff13d900c2f185ee95427fb06ca6acf5bcf2df95d11757b61a39bdcc028',1,'S7XG.h']]], 30 | ['s7xg_5fgps_5fstart_5fwarm',['S7XG_GPS_START_WARM',['../S7XG_8h.html#adc29c2ff13d900c2f185ee95427fb06ca9b50eafbac4faf7e715f228c35056823',1,'S7XG.h']]], 31 | ['s7xg_5fgps_5fsystem_5fgps',['S7XG_GPS_SYSTEM_GPS',['../S7XG_8h.html#a61dadd085c1777f559549e05962b2c9ea2f52416006508796789bb97f738aa634',1,'S7XG.h']]], 32 | ['s7xg_5fgps_5fsystem_5fhybrid',['S7XG_GPS_SYSTEM_HYBRID',['../S7XG_8h.html#a61dadd085c1777f559549e05962b2c9eace21f1959312af2e4e6ca3404652bb13',1,'S7XG.h']]], 33 | ['s7xg_5fmac_5fclass_5fa',['S7XG_MAC_CLASS_A',['../S7XG_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a06746b5d4398b22ae63040db7f1e7eb4',1,'S7XG.h']]], 34 | ['s7xg_5fmac_5fclass_5fc',['S7XG_MAC_CLASS_C',['../S7XG_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a5dea7038d13ee2f98240a578f948b222',1,'S7XG.h']]] 35 | ]; 36 | -------------------------------------------------------------------------------- /docs/search/files_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/files_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['changelog_2emd',['CHANGELOG.md',['../CHANGELOG_8md.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/files_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/files_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['s7xg_2ecpp',['S7XG.cpp',['../S7XG_8cpp.html',1,'']]], 4 | ['s7xg_2eh',['S7XG.h',['../S7XG_8h.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/functions_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/functions_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_5fflush',['_flush',['../classS7XG.html#a7fec98d6580a8de981f0d1a05b3a3c16',1,'S7XG']]], 4 | ['_5fnibble',['_nibble',['../classS7XG.html#a5a02cf17875d3220c466c00ed8db956c',1,'S7XG']]], 5 | ['_5fnice_5fdelay',['_nice_delay',['../classS7XG.html#ac38b6303b0496e406d6d7749f4f5c30e',1,'S7XG']]], 6 | ['_5freadline',['_readLine',['../classS7XG.html#aca7dfffad3213427fb97fbff13006a50',1,'S7XG']]], 7 | ['_5fsend',['_send',['../classS7XG.html#a3da4083e27730520439deec0a0d17c80',1,'S7XG']]], 8 | ['_5fsendandack',['_sendAndACK',['../classS7XG.html#a55d765b70f6f8fbc022c06416759abd9',1,'S7XG']]], 9 | ['_5fsendandreturn',['_sendAndReturn',['../classS7XG.html#adc103556e941a59460ae3686d6e10040',1,'S7XG']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /docs/search/functions_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/functions_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['begin',['begin',['../classS7XG.html#ab0709504402e8979ac8ba6aacb3ad45f',1,'S7XG']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/functions_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/functions_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['geteui',['getEUI',['../classS7XG.html#acb17b3ecb8aaaa3254c3c9c29d0ce1ef',1,'S7XG']]], 4 | ['gethardware',['getHardware',['../classS7XG.html#a5a540525822d58b3226eb68504c1e1d6',1,'S7XG']]], 5 | ['getresponse',['getResponse',['../classS7XG.html#a374fe4f8aaa7ed0e4dd73e099d92f6f3',1,'S7XG']]], 6 | ['getversion',['getVersion',['../classS7XG.html#afde85c3dc8a5664b2c1f096b386f8219',1,'S7XG']]], 7 | ['gpscycle',['gpsCycle',['../classS7XG.html#af495c81b555e897ca9b7da7f4afccc4d',1,'S7XG']]], 8 | ['gpsdata',['gpsData',['../classS7XG.html#a50dcf5ae222e45ed80d8059538389da1',1,'S7XG']]], 9 | ['gpsformat',['gpsFormat',['../classS7XG.html#a517469e32105d5b2ae6ebf69d60e9d13',1,'S7XG']]], 10 | ['gpsinit',['gpsInit',['../classS7XG.html#a9aad0fbc5873421fd98fdae6e1685dc0',1,'S7XG']]], 11 | ['gpsmode',['gpsMode',['../classS7XG.html#af620ad6eb6d003278de85f3d7e36a5cd',1,'S7XG::gpsMode(uint8_t mode)'],['../classS7XG.html#aa5cee2b653a444c1c1d52f4b5d04ef6d',1,'S7XG::gpsMode()']]], 12 | ['gpsport',['gpsPort',['../classS7XG.html#acd2ab973ae78e7710a1edd2efdce04da',1,'S7XG']]], 13 | ['gpsreset',['gpsReset',['../classS7XG.html#a30e569caddac0def18187e23995df914',1,'S7XG']]], 14 | ['gpssleep',['gpsSleep',['../classS7XG.html#ae93cb3a1c55e673944eca5a7585d2e4d',1,'S7XG']]], 15 | ['gpsstart',['gpsStart',['../classS7XG.html#a5fd96eb0db48aac341f87e70cc775748',1,'S7XG']]], 16 | ['gpssystem',['gpsSystem',['../classS7XG.html#a8132545ff6370735b34ff439dd9b86b9',1,'S7XG']]], 17 | ['gpswake',['gpsWake',['../classS7XG.html#adcd336eebc8a7f347cd84e83161d3e1d',1,'S7XG']]] 18 | ]; 19 | -------------------------------------------------------------------------------- /docs/search/functions_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/functions_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['hexlify',['hexlify',['../classS7XG.html#a7279759ffaa7d3f3291be3e77db965c9',1,'S7XG']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/functions_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/functions_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['macadr',['macADR',['../classS7XG.html#abaaad457ef99e43602536c7550f63869',1,'S7XG']]], 4 | ['macband',['macBand',['../classS7XG.html#a93e16d19a2df59feb361a7149a7478fa',1,'S7XG']]], 5 | ['macchannelfrequency',['macChannelFrequency',['../classS7XG.html#a31d1793bdd5ada9627279c42efa42c36',1,'S7XG']]], 6 | ['macchannelstatus',['macChannelStatus',['../classS7XG.html#a96463e8eca7b366eecc4bc3963996a1e',1,'S7XG']]], 7 | ['macclass',['macClass',['../classS7XG.html#a6a249dd895a8a66cf916e7a5935a7dc0',1,'S7XG']]], 8 | ['macdatarate',['macDatarate',['../classS7XG.html#af572d5fc0eba9141dee60409bf6edb05',1,'S7XG']]], 9 | ['macdowncounter',['macDownCounter',['../classS7XG.html#a13eaac653762b6f8bca64ae405c51346',1,'S7XG::macDownCounter(uint32_t counter)'],['../classS7XG.html#a3e179ee9bc3f120011c50b6ca28b2c49',1,'S7XG::macDownCounter()']]], 10 | ['macdutycycle',['macDutyCycle',['../classS7XG.html#a72c4b23404ee5f7b7df9adee7cff102d',1,'S7XG']]], 11 | ['macjoinabp',['macJoinABP',['../classS7XG.html#acb23ebd9eff94494b8603527592efa89',1,'S7XG']]], 12 | ['macjoined',['macJoined',['../classS7XG.html#a32b291b1728cbef459689dd090ab2788',1,'S7XG']]], 13 | ['macjoinotaa',['macJoinOTAA',['../classS7XG.html#a2bf7ca24034b9a002b1eb6cb7a9843f2',1,'S7XG::macJoinOTAA(const char *deveui, const char *appeui, const char *appkey)'],['../classS7XG.html#afe73bd0d89f37aacbc23c70565679a96',1,'S7XG::macJoinOTAA(const char *appeui, const char *appkey)']]], 14 | ['macpower',['macPower',['../classS7XG.html#ad16a6bd80c2f1f8004d1099de9ee4bbb',1,'S7XG']]], 15 | ['macretries',['macRetries',['../classS7XG.html#af42eb730c3374220b25bf357fbf7df23',1,'S7XG']]], 16 | ['macsave',['macSave',['../classS7XG.html#aaf63a218198408566b6289d73a49fa89',1,'S7XG']]], 17 | ['macsend',['macSend',['../classS7XG.html#aeeccf71024da8c8ec402a682da351fc0',1,'S7XG::macSend(char *data, bool confirmed=false, uint8_t port=1)'],['../classS7XG.html#affd3d574e3119520baa783fa865e2f5b',1,'S7XG::macSend(uint8_t *data, uint8_t len, bool confirmed=false, uint8_t port=1)']]], 18 | ['macsync',['macSync',['../classS7XG.html#ad6e43e41245e49c1802f13fd8f7024e4',1,'S7XG']]], 19 | ['macupcounter',['macUpCounter',['../classS7XG.html#abfa773cf951702c2fe7e419761884d5c',1,'S7XG::macUpCounter(uint32_t counter)'],['../classS7XG.html#ab58ed1d764245747a57a2e4d111d7a29',1,'S7XG::macUpCounter()']]] 20 | ]; 21 | -------------------------------------------------------------------------------- /docs/search/functions_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/functions_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['reset',['reset',['../classS7XG.html#aedf779b3cb55bb87c22604be1822c62b',1,'S7XG']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/functions_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/functions_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['sleep',['sleep',['../classS7XG.html#a192fd4077e897483a568ad987dd480e8',1,'S7XG']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/functions_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/functions_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['txcycle',['txCycle',['../classS7XG.html#acf59d41dbba8643c2659b11da5918692',1,'S7XG']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/functions_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/functions_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['unhexlify',['unhexlify',['../classS7XG.html#a5365086da88ec809d78ff43ee3056813',1,'S7XG']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/functions_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/functions_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['wake',['wake',['../classS7XG.html#acb47804e3f032bcaced019cf3c630f98',1,'S7XG']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/mag_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/search/mag_sel.png -------------------------------------------------------------------------------- /docs/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
    9 |
    No Matches
    10 |
    11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/search/pages_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/pages_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['s7xg_20change_20log',['S7XG change log',['../md_CHANGELOG.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/search.css: -------------------------------------------------------------------------------- 1 | /*---------------- Search Box */ 2 | 3 | #FSearchBox { 4 | float: left; 5 | } 6 | 7 | #MSearchBox { 8 | white-space : nowrap; 9 | float: none; 10 | margin-top: 8px; 11 | right: 0px; 12 | width: 170px; 13 | height: 24px; 14 | z-index: 102; 15 | } 16 | 17 | #MSearchBox .left 18 | { 19 | display:block; 20 | position:absolute; 21 | left:10px; 22 | width:20px; 23 | height:19px; 24 | background:url('search_l.png') no-repeat; 25 | background-position:right; 26 | } 27 | 28 | #MSearchSelect { 29 | display:block; 30 | position:absolute; 31 | width:20px; 32 | height:19px; 33 | } 34 | 35 | .left #MSearchSelect { 36 | left:4px; 37 | } 38 | 39 | .right #MSearchSelect { 40 | right:5px; 41 | } 42 | 43 | #MSearchField { 44 | display:block; 45 | position:absolute; 46 | height:19px; 47 | background:url('search_m.png') repeat-x; 48 | border:none; 49 | width:115px; 50 | margin-left:20px; 51 | padding-left:4px; 52 | color: #909090; 53 | outline: none; 54 | font: 9pt Arial, Verdana, sans-serif; 55 | -webkit-border-radius: 0px; 56 | } 57 | 58 | #FSearchBox #MSearchField { 59 | margin-left:15px; 60 | } 61 | 62 | #MSearchBox .right { 63 | display:block; 64 | position:absolute; 65 | right:10px; 66 | top:8px; 67 | width:20px; 68 | height:19px; 69 | background:url('search_r.png') no-repeat; 70 | background-position:left; 71 | } 72 | 73 | #MSearchClose { 74 | display: none; 75 | position: absolute; 76 | top: 4px; 77 | background : none; 78 | border: none; 79 | margin: 0px 4px 0px 0px; 80 | padding: 0px 0px; 81 | outline: none; 82 | } 83 | 84 | .left #MSearchClose { 85 | left: 6px; 86 | } 87 | 88 | .right #MSearchClose { 89 | right: 2px; 90 | } 91 | 92 | .MSearchBoxActive #MSearchField { 93 | color: #000000; 94 | } 95 | 96 | /*---------------- Search filter selection */ 97 | 98 | #MSearchSelectWindow { 99 | display: none; 100 | position: absolute; 101 | left: 0; top: 0; 102 | border: 1px solid #90A5CE; 103 | background-color: #F9FAFC; 104 | z-index: 10001; 105 | padding-top: 4px; 106 | padding-bottom: 4px; 107 | -moz-border-radius: 4px; 108 | -webkit-border-top-left-radius: 4px; 109 | -webkit-border-top-right-radius: 4px; 110 | -webkit-border-bottom-left-radius: 4px; 111 | -webkit-border-bottom-right-radius: 4px; 112 | -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); 113 | } 114 | 115 | .SelectItem { 116 | font: 8pt Arial, Verdana, sans-serif; 117 | padding-left: 2px; 118 | padding-right: 12px; 119 | border: 0px; 120 | } 121 | 122 | span.SelectionMark { 123 | margin-right: 4px; 124 | font-family: monospace; 125 | outline-style: none; 126 | text-decoration: none; 127 | } 128 | 129 | a.SelectItem { 130 | display: block; 131 | outline-style: none; 132 | color: #000000; 133 | text-decoration: none; 134 | padding-left: 6px; 135 | padding-right: 12px; 136 | } 137 | 138 | a.SelectItem:focus, 139 | a.SelectItem:active { 140 | color: #000000; 141 | outline-style: none; 142 | text-decoration: none; 143 | } 144 | 145 | a.SelectItem:hover { 146 | color: #FFFFFF; 147 | background-color: #3D578C; 148 | outline-style: none; 149 | text-decoration: none; 150 | cursor: pointer; 151 | display: block; 152 | } 153 | 154 | /*---------------- Search results window */ 155 | 156 | iframe#MSearchResults { 157 | width: 60ex; 158 | height: 15em; 159 | } 160 | 161 | #MSearchResultsWindow { 162 | display: none; 163 | position: absolute; 164 | left: 0; top: 0; 165 | border: 1px solid #000; 166 | background-color: #EEF1F7; 167 | z-index:10000; 168 | } 169 | 170 | /* ----------------------------------- */ 171 | 172 | 173 | #SRIndex { 174 | clear:both; 175 | padding-bottom: 15px; 176 | } 177 | 178 | .SREntry { 179 | font-size: 10pt; 180 | padding-left: 1ex; 181 | } 182 | 183 | .SRPage .SREntry { 184 | font-size: 8pt; 185 | padding: 1px 5px; 186 | } 187 | 188 | body.SRPage { 189 | margin: 5px 2px; 190 | } 191 | 192 | .SRChildren { 193 | padding-left: 3ex; padding-bottom: .5em 194 | } 195 | 196 | .SRPage .SRChildren { 197 | display: none; 198 | } 199 | 200 | .SRSymbol { 201 | font-weight: bold; 202 | color: #425E97; 203 | font-family: Arial, Verdana, sans-serif; 204 | text-decoration: none; 205 | outline: none; 206 | } 207 | 208 | a.SRScope { 209 | display: block; 210 | color: #425E97; 211 | font-family: Arial, Verdana, sans-serif; 212 | text-decoration: none; 213 | outline: none; 214 | } 215 | 216 | a.SRSymbol:focus, a.SRSymbol:active, 217 | a.SRScope:focus, a.SRScope:active { 218 | text-decoration: underline; 219 | } 220 | 221 | span.SRScope { 222 | padding-left: 4px; 223 | } 224 | 225 | .SRPage .SRStatus { 226 | padding: 2px 5px; 227 | font-size: 8pt; 228 | font-style: italic; 229 | } 230 | 231 | .SRResult { 232 | display: none; 233 | } 234 | 235 | DIV.searchresults { 236 | margin-left: 10px; 237 | margin-right: 10px; 238 | } 239 | 240 | /*---------------- External search page results */ 241 | 242 | .searchresult { 243 | background-color: #F0F3F8; 244 | } 245 | 246 | .pages b { 247 | color: white; 248 | padding: 5px 5px 3px 5px; 249 | background-image: url("../tab_a.png"); 250 | background-repeat: repeat-x; 251 | text-shadow: 0 1px 1px #000000; 252 | } 253 | 254 | .pages { 255 | line-height: 17px; 256 | margin-left: 4px; 257 | text-decoration: none; 258 | } 259 | 260 | .hl { 261 | font-weight: bold; 262 | } 263 | 264 | #searchresults { 265 | margin-bottom: 20px; 266 | } 267 | 268 | .searchpages { 269 | margin-top: 10px; 270 | } 271 | 272 | -------------------------------------------------------------------------------- /docs/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/search/search_l.png -------------------------------------------------------------------------------- /docs/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/search/search_m.png -------------------------------------------------------------------------------- /docs/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/search/search_r.png -------------------------------------------------------------------------------- /docs/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "_bcdfghlmprstuwy", 4 | 1: "gs", 5 | 2: "cs", 6 | 3: "_bghmrstuw", 7 | 4: "_dfhlmpsy", 8 | 5: "s", 9 | 6: "s", 10 | 7: "s" 11 | }; 12 | 13 | var indexSectionNames = 14 | { 15 | 0: "all", 16 | 1: "classes", 17 | 2: "files", 18 | 3: "functions", 19 | 4: "variables", 20 | 5: "enumvalues", 21 | 6: "defines", 22 | 7: "pages" 23 | }; 24 | 25 | var indexSectionLabels = 26 | { 27 | 0: "All", 28 | 1: "Data Structures", 29 | 2: "Files", 30 | 3: "Functions", 31 | 4: "Variables", 32 | 5: "Enumerator", 33 | 6: "Macros", 34 | 7: "Pages" 35 | }; 36 | 37 | -------------------------------------------------------------------------------- /docs/search/variables_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/variables_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_5fbuffer',['_buffer',['../classS7XG.html#a7f73f33bcc5fd1ee3541d1e46e2ca5c7',1,'S7XG']]], 4 | ['_5feui',['_eui',['../classS7XG.html#aa878e0f67d80dbed7e41e8abad94de4f',1,'S7XG']]], 5 | ['_5fstream',['_stream',['../classS7XG.html#a8027d596af2c2d5a9a38d26a3b085c84',1,'S7XG']]], 6 | ['_5fwait_5flonger',['_wait_longer',['../classS7XG.html#af5c25e29c61f56650ee6a987b78ee014',1,'S7XG']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/search/variables_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/variables_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['day',['day',['../structgps__message__t.html#a6487e70a205919d32b497d5d0e6dbd8e',1,'gps_message_t']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/variables_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/variables_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['fix',['fix',['../structgps__message__t.html#a13eb78e08f1e3ee1756d42f4e5756320',1,'gps_message_t']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/variables_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/variables_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['hour',['hour',['../structgps__message__t.html#aa13852965a1e00fcbaf8fee0a446ea02',1,'gps_message_t']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/variables_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/variables_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['latitude',['latitude',['../structgps__message__t.html#a60a588afd27b006c3da35f71e095f66a',1,'gps_message_t']]], 4 | ['longitude',['longitude',['../structgps__message__t.html#abc187e2c1f521768c72085f2c46b5453',1,'gps_message_t']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/variables_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/variables_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['minute',['minute',['../structgps__message__t.html#a9b7af5973e9a59ca633a6788b0638a52',1,'gps_message_t']]], 4 | ['month',['month',['../structgps__message__t.html#a709e6897ef9adb4d0346b06166134522',1,'gps_message_t']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/variables_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/variables_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['positioning',['positioning',['../structgps__message__t.html#aea7ab3311d100ad256754d500f96a6c9',1,'gps_message_t']]], 4 | ['progmem',['PROGMEM',['../S7XG_8h.html#a6526b39b3f37fbfb357e145faf08fb02',1,'S7XG.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/variables_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/variables_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['second',['second',['../structgps__message__t.html#ae32f197cb056186507b05ef1869355b4',1,'gps_message_t']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/variables_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/search/variables_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['year',['year',['../structgps__message__t.html#af94de5d6a8ed47a626eea939fce42dfd',1,'gps_message_t']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/splitbar.png -------------------------------------------------------------------------------- /docs/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/sync_off.png -------------------------------------------------------------------------------- /docs/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/sync_on.png -------------------------------------------------------------------------------- /docs/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/tab_a.png -------------------------------------------------------------------------------- /docs/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/tab_b.png -------------------------------------------------------------------------------- /docs/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/tab_h.png -------------------------------------------------------------------------------- /docs/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoseperez/s7xg/555da8135843605151195c4180a1e64a176d7687/docs/tab_s.png -------------------------------------------------------------------------------- /docs/tabs.css: -------------------------------------------------------------------------------- 1 | .sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} -------------------------------------------------------------------------------- /examples/build_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | for d in $(find . -name platformio.ini | sed 's/platformio.ini//' | grep -v .pio); do 4 | echo "Building project in folder $d" 5 | pushd $d 6 | pio run -s 7 | popd 8 | done -------------------------------------------------------------------------------- /examples/gps_auto/gps_auto.ino: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | S7XG library 4 | 5 | GPS auto report example 6 | In this example the S7XG module reports GPS data via LoRaWAN every X seconds. 7 | 8 | Copyright (C) 2019 by Xose Pérez 9 | 10 | The S7XG library is free software: you can redistribute it and/or modify 11 | it under the terms of the GNU Lesser General Public License as published by 12 | the Free Software Foundation, either version 3 of the License, or 13 | (at your option) any later version. 14 | 15 | The S7XG library is distributed in the hope that it will be useful, 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | GNU Lesser General Public License for more details. 19 | 20 | You should have received a copy of the GNU Lesser General Public License 21 | along with the S7XG library. If not, see . 22 | 23 | */ 24 | 25 | #ifndef ARDUINO_ARCH_ESP32 26 | #error "This scketch is meant to run on an ESP32 board" 27 | #endif 28 | 29 | HardwareSerial SerialS7XG(1); 30 | 31 | #include "S7XG.h" 32 | S7XG module; 33 | 34 | // This is required for the TTGO-T-Watch 35 | #if defined(ARDUINO_T_WATCH) 36 | 37 | #include 38 | #include "axp20x.h" 39 | AXP20X_Class axp; 40 | 41 | void s7xg_power(bool status) { 42 | axp.setLDO4Voltage(AXP202_LDO4_1800MV); 43 | axp.setPowerOutPut(AXP202_LDO4, status ? AXP202_ON : AXP202_OFF); 44 | } 45 | 46 | #endif 47 | 48 | const char *devAddr = "26011433"; 49 | const char *nwkSKey = "5DE49A0F0C9649B8D466B9032DAAB331"; 50 | const char *appSKey = "EE0080DAB519CEF94E2EC83A110AA43A"; 51 | 52 | void setup() { 53 | 54 | // Reset the S7XG module 55 | #if defined(ARDUINO_T_WATCH) 56 | Wire.begin(21, 22); 57 | axp.begin(Wire); 58 | s7xg_power(false); 59 | delay(1000); 60 | s7xg_power(true); 61 | #endif 62 | 63 | // Init connection to the PC 64 | Serial.begin(115200); 65 | delay(2000); 66 | Serial.println(); 67 | Serial.println("[INFO ] S7XG auto GPS report"); 68 | Serial.println(); 69 | 70 | // Init connection to the module 71 | SerialS7XG.begin(115200, SERIAL_8N1, 34, 33); 72 | module.begin(SerialS7XG); 73 | 74 | // Show the Device EUI 75 | Serial.print ("[INFO ] Device EUI: "); 76 | Serial.println(module.getEUI()); 77 | 78 | // Transmit at max power ETSI allows 79 | module.macPower(14); 80 | 81 | // Use SF7 and BW125 82 | module.macDatarate(S7XG_DR_SF7BW125_EU); 83 | 84 | // Do not use ADR (moving device) 85 | module.macADR(false); 86 | 87 | // Initialize GPS (5s cycle, manual mode, gps system, hot start,...) 88 | module.gpsInit(); 89 | 90 | // Report every 20 seconds 91 | module.txCycle(20); 92 | 93 | // On LoRaWAN port 3 94 | module.gpsPort(3); 95 | 96 | // Use CayenneLPP compatible encoding 97 | module.gpsFormat(S7XG_GPS_FORMAT_IPSO); 98 | 99 | // Join the network using Activation-By-Personalisation 100 | module.macJoinABP(devAddr, nwkSKey, appSKey); 101 | 102 | // Set GPS in auto mode 103 | module.gpsMode(S7XG_GPS_MODE_AUTO); 104 | 105 | // The module will now start to send GPS coordinates via LoRaWAN every X seconds. 106 | // If the GPS does not have a fix it will send a non-LLP valid payload 107 | 108 | // MAC and GPS properties can be changed on-the-fly. 109 | // The module will report new messagesusing the changed properties 110 | // until GPS mode is changed. 111 | 112 | } 113 | 114 | void loop() { 115 | delay(1); 116 | } -------------------------------------------------------------------------------- /examples/gps_auto/platformio.ini: -------------------------------------------------------------------------------- 1 | [platformio] 2 | src_dir = . 3 | default_envs = ttgo-t-watch 4 | 5 | [env] 6 | framework = arduino 7 | monitor_speed = 115200 8 | #build_flags = -DS7XG_DEBUG_SERIAL=Serial 9 | lib_deps = 10 | https://github.com/lewisxhe/AXP202X_Library 11 | lib_extra_dirs = 12 | .pio/libdeps/$PIOENV 13 | ../.. 14 | 15 | [env:ttgo-t-watch] 16 | platform = espressif32 17 | board = nano32 18 | upload_speed = 921600 19 | build_flags = -DARDUINO_T_WATCH 20 | -------------------------------------------------------------------------------- /examples/gps_basic/gps_basic.ino: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | S7XG library 4 | 5 | Basic GPS example 6 | 7 | Copyright (C) 2019 by Xose Pérez 8 | 9 | The S7XG library is free software: you can redistribute it and/or modify 10 | it under the terms of the GNU Lesser General Public License as published by 11 | the Free Software Foundation, either version 3 of the License, or 12 | (at your option) any later version. 13 | 14 | The S7XG library is distributed in the hope that it will be useful, 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | GNU Lesser General Public License for more details. 18 | 19 | You should have received a copy of the GNU Lesser General Public License 20 | along with the S7XG library. If not, see . 21 | 22 | */ 23 | 24 | #ifndef ARDUINO_ARCH_ESP32 25 | #error "This scketch is meant to run on an ESP32 board" 26 | #endif 27 | 28 | HardwareSerial SerialS7XG(1); 29 | 30 | #include "S7XG.h" 31 | S7XG module; 32 | 33 | // This is required for the TTGO-T-Watch 34 | #if defined(ARDUINO_T_WATCH) 35 | 36 | #include 37 | #include "axp20x.h" 38 | AXP20X_Class axp; 39 | 40 | void s7xg_power(bool status) { 41 | axp.setLDO4Voltage(AXP202_LDO4_1800MV); 42 | axp.setPowerOutPut(AXP202_LDO4, status ? AXP202_ON : AXP202_OFF); 43 | } 44 | 45 | #endif 46 | 47 | void setup() { 48 | 49 | // Power the S7XG module 50 | #if defined(ARDUINO_T_WATCH) 51 | Wire.begin(21, 22); 52 | axp.begin(Wire); 53 | s7xg_power(false); 54 | delay(1000); 55 | s7xg_power(true); 56 | #endif 57 | 58 | // Init connection to the PC 59 | Serial.begin(115200); 60 | delay(2000); 61 | Serial.println(); 62 | Serial.println("[INFO ] S7XG basic GPS"); 63 | Serial.println(); 64 | 65 | // Init connection to the module 66 | SerialS7XG.begin(115200, SERIAL_8N1, 34, 33); 67 | module.begin(SerialS7XG); 68 | 69 | // Initialize GPS (5s cycle, manual mode, gps system, hot start,...) 70 | module.gpsInit(); 71 | 72 | } 73 | 74 | void loop() { 75 | 76 | // Every 5 seconds 77 | delay(5000); 78 | 79 | // Retrieve localization from the GPS 80 | gps_message_t message = module.gpsData(); 81 | 82 | // Print it 83 | if (message.fix) { 84 | Serial.print("Latitude : "); Serial.println(message.latitude, 6); 85 | Serial.print("Longitude : "); Serial.println(message.longitude, 6); 86 | char buffer[40]; 87 | snprintf( 88 | buffer, sizeof(buffer), "Datetime : %04d-%02d-%02d %02d:%02d:%02d", 89 | message.year, message.month, message.day, 90 | message.hour, message.minute, message.second); 91 | Serial.println(buffer); 92 | } 93 | Serial.print("Positioning: "); Serial.println(message.positioning); 94 | Serial.println(); 95 | 96 | } -------------------------------------------------------------------------------- /examples/gps_basic/platformio.ini: -------------------------------------------------------------------------------- 1 | [platformio] 2 | src_dir = . 3 | default_envs = ttgo-t-watch 4 | 5 | [env] 6 | framework = arduino 7 | monitor_speed = 115200 8 | #build_flags = -DS7XG_DEBUG_SERIAL=Serial 9 | lib_deps = 10 | https://github.com/lewisxhe/AXP202X_Library 11 | lib_extra_dirs = 12 | .pio/libdeps/$PIOENV 13 | ../.. 14 | 15 | [env:ttgo-t-watch] 16 | platform = espressif32 17 | board = nano32 18 | upload_speed = 921600 19 | build_flags = -DARDUINO_T_WATCH 20 | -------------------------------------------------------------------------------- /examples/lorawan_abp/lorawan_abp.ino: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | S7XG library 4 | 5 | Join a LoRaWAN network in ABP mode 6 | Uses the CayenneLPP library to encode the payload 7 | 8 | Copyright (C) 2019 by Xose Pérez 9 | 10 | The S7XG library is free software: you can redistribute it and/or modify 11 | it under the terms of the GNU Lesser General Public License as published by 12 | the Free Software Foundation, either version 3 of the License, or 13 | (at your option) any later version. 14 | 15 | The S7XG library is distributed in the hope that it will be useful, 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | GNU Lesser General Public License for more details. 19 | 20 | You should have received a copy of the GNU Lesser General Public License 21 | along with the S7XG library. If not, see . 22 | 23 | */ 24 | 25 | #ifndef ARDUINO_ARCH_ESP32 26 | #error "This scketch is meant to run on an ESP32 board" 27 | #endif 28 | 29 | HardwareSerial SerialS7XG(1); 30 | 31 | #include "S7XG.h" 32 | S7XG module; 33 | 34 | #include "CayenneLPP.h" 35 | CayenneLPP lpp(32); 36 | 37 | // This is required for the TTGO-T-Watch 38 | #if defined(ARDUINO_T_WATCH) 39 | 40 | #include 41 | #include "axp20x.h" 42 | AXP20X_Class axp; 43 | 44 | void s7xg_power(bool status) { 45 | axp.setLDO4Voltage(AXP202_LDO4_1800MV); 46 | axp.setPowerOutPut(AXP202_LDO4, status ? AXP202_ON : AXP202_OFF); 47 | } 48 | 49 | #endif 50 | 51 | const char *devAddr = "26011433"; 52 | const char *nwkSKey = "5DE49A0F0C9649B8D466B9032DAAB331"; 53 | const char *appSKey = "EE0080DAB519CEF94E2EC83A110AA43A"; 54 | 55 | void setup() { 56 | 57 | // Reset the S7XG module power supply 58 | #if defined(ARDUINO_T_WATCH) 59 | Wire.begin(21, 22); 60 | axp.begin(Wire); 61 | s7xg_power(false); 62 | delay(1000); 63 | s7xg_power(true); 64 | #endif 65 | 66 | // Init PC connection 67 | Serial.begin(115200); 68 | delay(2000); 69 | Serial.println(); 70 | Serial.println("[INFO ] LoRaWAN ABP join example"); 71 | Serial.println(); 72 | 73 | // Init connection to the module 74 | SerialS7XG.begin(115200, SERIAL_8N1, 34, 33); 75 | module.begin(SerialS7XG); 76 | 77 | // Show the Device EUI 78 | Serial.print ("[INFO ] Device EUI: "); 79 | Serial.println(module.getEUI()); 80 | 81 | // Transmit at max power ETSI allows 82 | module.macPower(14); 83 | 84 | // Use SF7 and BW125 85 | module.macDatarate(S7XG_DR_SF7BW125_EU); 86 | 87 | // Do not use ADR (moving device) 88 | module.macADR(false); 89 | 90 | // Disable duty cycle check (never do this in production!) 91 | module.macDutyCycle(false); 92 | 93 | if (module.macJoinABP(devAddr, nwkSKey, appSKey)) { 94 | Serial.println("[INFO ] Joined!"); 95 | } else { 96 | Serial.println("[ERROR] Timeout while joining"); 97 | while (true) delay(1); 98 | } 99 | 100 | delay(1000); 101 | 102 | } 103 | 104 | void loop() { 105 | 106 | // Build the payload using CayenneLPP 107 | lpp.reset(); 108 | lpp.addTemperature(1, 22.5); 109 | lpp.addBarometricPressure(2, 1073.21); 110 | lpp.addGPS(3, 52.37365, 4.88650, 2); 111 | 112 | // Sending the data 113 | Serial.println("[INFO ] Sending..."); 114 | if (!module.macSend(lpp.getBuffer(), lpp.getSize())) { 115 | Serial.print("[ERROR] Response: "); 116 | Serial.println(module.getResponse()); 117 | } 118 | 119 | delay(10000); 120 | 121 | } -------------------------------------------------------------------------------- /examples/lorawan_abp/platformio.ini: -------------------------------------------------------------------------------- 1 | [platformio] 2 | src_dir = . 3 | default_envs = ttgo-t-watch 4 | 5 | [env] 6 | framework = arduino 7 | monitor_speed = 115200 8 | #build_flags = -DS7XG_DEBUG_SERIAL=Serial 9 | lib_deps = 10 | https://github.com/lewisxhe/AXP202X_Library 11 | CayenneLPP 12 | ArduinoJSON 13 | lib_extra_dirs = 14 | .pio/libdeps/$PIOENV 15 | ../.. 16 | 17 | [env:ttgo-t-watch] 18 | platform = espressif32 19 | board = nano32 20 | upload_speed = 921600 21 | build_flags = -DARDUINO_T_WATCH 22 | -------------------------------------------------------------------------------- /examples/lorawan_otaa/lorawan_otaa.ino: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | S7XG library 4 | 5 | Join a LoRaWAN network in OTAA mode 6 | 7 | Copyright (C) 2019 by Xose Pérez 8 | 9 | The S7XG library is free software: you can redistribute it and/or modify 10 | it under the terms of the GNU Lesser General Public License as published by 11 | the Free Software Foundation, either version 3 of the License, or 12 | (at your option) any later version. 13 | 14 | The S7XG library is distributed in the hope that it will be useful, 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | GNU Lesser General Public License for more details. 18 | 19 | You should have received a copy of the GNU Lesser General Public License 20 | along with the S7XG library. If not, see . 21 | 22 | */ 23 | 24 | #ifndef ARDUINO_ARCH_ESP32 25 | #error "This scketch is meant to run on an ESP32 board" 26 | #endif 27 | 28 | HardwareSerial SerialS7XG(1); 29 | 30 | #include "S7XG.h" 31 | S7XG module; 32 | 33 | // This is required for the TTGO-T-Watch 34 | #if defined(ARDUINO_T_WATCH) 35 | 36 | #include 37 | #include "axp20x.h" 38 | AXP20X_Class axp; 39 | 40 | void s7xg_power(bool status) { 41 | axp.setLDO4Voltage(AXP202_LDO4_1800MV); 42 | axp.setPowerOutPut(AXP202_LDO4, status ? AXP202_ON : AXP202_OFF); 43 | } 44 | 45 | #endif 46 | 47 | const char *appEui = "70B3D57EF0001B38"; 48 | const char *appKey = "A8E60CE2CAB3BD95E3B9297E4C9E2909"; 49 | 50 | void setup() { 51 | 52 | // Reset the S7XG module power supply 53 | #if defined(ARDUINO_T_WATCH) 54 | Wire.begin(21, 22); 55 | axp.begin(Wire); 56 | s7xg_power(false); 57 | delay(1000); 58 | s7xg_power(true); 59 | #endif 60 | 61 | // Init PC connection 62 | Serial.begin(115200); 63 | delay(2000); 64 | Serial.println(); 65 | Serial.println("[INFO ] LoRaWAN OTAA join example"); 66 | Serial.println(); 67 | 68 | // Init connection to the module 69 | SerialS7XG.begin(115200, SERIAL_8N1, 34, 33); 70 | module.begin(SerialS7XG); 71 | 72 | // Show the Device EUI 73 | Serial.print ("[INFO ] Device EUI: "); 74 | Serial.println(module.getEUI()); 75 | 76 | // Transmit at max power ETSI allows 77 | module.macPower(14); 78 | 79 | // Use SF7 and BW125 80 | module.macDatarate(S7XG_DR_SF7BW125_EU); 81 | 82 | // Do not use ADR (moving device) 83 | module.macADR(false); 84 | 85 | // Disable duty cycle check (never do this in production!) 86 | module.macDutyCycle(false); 87 | 88 | module.macJoinOTAA(appEui, appKey); 89 | if (module.macWaitJoined()) { 90 | Serial.println("[INFO ] Joined!"); 91 | } else { 92 | Serial.println("[ERROR] Timeout while joining"); 93 | while (true) delay(1); 94 | } 95 | 96 | delay(1000); 97 | 98 | } 99 | 100 | void loop() { 101 | static uint8_t count = 0; 102 | uint8_t payload[1] = { count++ }; 103 | Serial.print("[INFO ] Sending "); 104 | Serial.println(count); 105 | if (!module.macSend(payload, 1)) { 106 | Serial.print("[ERROR] Response: "); 107 | Serial.println(module.getResponse()); 108 | } 109 | delay(10000); 110 | } -------------------------------------------------------------------------------- /examples/lorawan_otaa/platformio.ini: -------------------------------------------------------------------------------- 1 | [platformio] 2 | src_dir = . 3 | default_envs = ttgo-t-watch 4 | 5 | [env] 6 | framework = arduino 7 | monitor_speed = 115200 8 | #build_flags = -DS7XG_DEBUG_SERIAL=Serial 9 | lib_deps = 10 | https://github.com/lewisxhe/AXP202X_Library 11 | lib_extra_dirs = 12 | .pio/libdeps/$PIOENV 13 | ../.. 14 | 15 | [env:ttgo-t-watch] 16 | platform = espressif32 17 | board = nano32 18 | upload_speed = 921600 19 | build_flags = -DARDUINO_T_WATCH 20 | -------------------------------------------------------------------------------- /examples/module_info/module_info.ino: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | S7XG library 4 | 5 | Basic module information, 6 | shows how to connect using different platforms 7 | 8 | Copyright (C) 2019 by Xose Pérez 9 | 10 | The S7XG library is free software: you can redistribute it and/or modify 11 | it under the terms of the GNU Lesser General Public License as published by 12 | the Free Software Foundation, either version 3 of the License, or 13 | (at your option) any later version. 14 | 15 | The S7XG library is distributed in the hope that it will be useful, 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | GNU Lesser General Public License for more details. 19 | 20 | You should have received a copy of the GNU Lesser General Public License 21 | along with the S7XG library. If not, see . 22 | 23 | */ 24 | 25 | #if defined(ARDUINO_ARCH_ESP32) 26 | HardwareSerial SerialS7XG(1); 27 | #elif defined(ARDUINO_AVR_LEONARDO) 28 | #define SerialS7XG Serial1 29 | #else 30 | #include "SoftwareSerial.h" 31 | SoftwareSerial SerialS7XG(4, 5); 32 | #endif 33 | 34 | #include "S7XG.h" 35 | S7XG module; 36 | 37 | // This is required for the TTGO-T-Watch 38 | #if defined(ARDUINO_T_WATCH) 39 | 40 | #include 41 | #include "axp20x.h" 42 | AXP20X_Class axp; 43 | 44 | void s7xg_power(bool status) { 45 | axp.setLDO4Voltage(AXP202_LDO4_1800MV); 46 | axp.setPowerOutPut(AXP202_LDO4, status ? AXP202_ON : AXP202_OFF); 47 | } 48 | 49 | #endif 50 | 51 | void setup() { 52 | 53 | // Power the S7XG module 54 | #if defined(ARDUINO_T_WATCH) 55 | Wire.begin(21, 22); 56 | axp.begin(Wire); 57 | s7xg_power(false); 58 | delay(1000); 59 | s7xg_power(true); 60 | #endif 61 | 62 | // Init PC connection 63 | Serial.begin(115200); 64 | delay(2000); 65 | Serial.println(); 66 | Serial.println("[INFO ] S7XG Module Info"); 67 | Serial.println(); 68 | 69 | // Init connection to the module 70 | #if defined(ARDUINO_ARCH_ESP32) 71 | SerialS7XG.begin(115200, SERIAL_8N1, 34, 33); 72 | #else 73 | SerialS7XG.begin(115200); 74 | #endif 75 | module.begin(SerialS7XG); 76 | module.reset(); 77 | 78 | Serial.print("Hardware: "); Serial.println(module.getHardware()); 79 | Serial.print("Version : "); Serial.println(module.getVersion()); 80 | Serial.print("EUI : "); Serial.println(module.getEUI()); 81 | Serial.print("Band : "); Serial.println(module.macBand()); 82 | 83 | } 84 | 85 | void loop() { 86 | delay(1); 87 | } -------------------------------------------------------------------------------- /examples/module_info/platformio.ini: -------------------------------------------------------------------------------- 1 | [platformio] 2 | src_dir = . 3 | default_envs = ttgo-t-watch 4 | 5 | [env] 6 | framework = arduino 7 | monitor_speed = 115200 8 | #build_flags = -DS7XG_DEBUG_SERIAL=Serial 9 | lib_deps = 10 | https://github.com/lewisxhe/AXP202X_Library 11 | lib_extra_dirs = 12 | .pio/libdeps/$PIOENV 13 | ../.. 14 | 15 | [env:ttgo-t-watch] 16 | platform = espressif32 17 | board = nano32 18 | upload_speed = 921600 19 | build_flags = -DARDUINO_T_WATCH 20 | 21 | [env:esp32] 22 | platform = espressif32 23 | board = nano32 24 | upload_speed = 921600 25 | 26 | [env:esp8266] 27 | platform = espressif8266 28 | board = esp12e 29 | upload_speed = 460800 30 | 31 | [env:leonardo] 32 | platform = atmelavr 33 | board = leonardo 34 | 35 | [env:uno] 36 | platform = atmelavr 37 | board = uno 38 | 39 | -------------------------------------------------------------------------------- /examples/serial_bridge/platformio.ini: -------------------------------------------------------------------------------- 1 | [platformio] 2 | src_dir = . 3 | default_envs = ttgo-t-watch 4 | 5 | [env] 6 | framework = arduino 7 | monitor_speed = 115200 8 | #build_flags = -DS7XG_DEBUG_SERIAL=Serial 9 | lib_deps = 10 | https://github.com/lewisxhe/AXP202X_Library 11 | lib_extra_dirs = 12 | .pio/libdeps/$PIOENV 13 | ../.. 14 | 15 | [env:ttgo-t-watch] 16 | platform = espressif32 17 | board = nano32 18 | upload_speed = 921600 19 | build_flags = -DARDUINO_T_WATCH 20 | -------------------------------------------------------------------------------- /examples/serial_bridge/serial_bridge.ino: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | S7XG library 4 | 5 | Simple serial bridge 6 | 7 | Copyright (C) 2019 by Xose Pérez 8 | 9 | The S7XG library is free software: you can redistribute it and/or modify 10 | it under the terms of the GNU Lesser General Public License as published by 11 | the Free Software Foundation, either version 3 of the License, or 12 | (at your option) any later version. 13 | 14 | The S7XG library is distributed in the hope that it will be useful, 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | GNU Lesser General Public License for more details. 18 | 19 | You should have received a copy of the GNU Lesser General Public License 20 | along with the S7XG library. If not, see . 21 | 22 | */ 23 | 24 | #ifndef ARDUINO_ARCH_ESP32 25 | #error "This scketch is meant to run on an ESP32 board" 26 | #endif 27 | 28 | // This is the hardwareserial port connected to the S7XG module 29 | HardwareSerial SerialS7XG(1); 30 | 31 | // This is required for the TTGO-T-Watch 32 | #if defined(ARDUINO_T_WATCH) 33 | 34 | #include 35 | #include "axp20x.h" 36 | AXP20X_Class axp; 37 | 38 | void s7xg_power(bool status) { 39 | axp.setLDO4Voltage(AXP202_LDO4_1800MV); 40 | axp.setPowerOutPut(AXP202_LDO4, status ? AXP202_ON : AXP202_OFF); 41 | } 42 | 43 | #endif 44 | 45 | void setup() { 46 | 47 | // Power the S7XG module 48 | #if defined(ARDUINO_T_WATCH) 49 | Wire.begin(21, 22); 50 | axp.begin(Wire); 51 | s7xg_power(false); 52 | delay(1000); 53 | s7xg_power(true); 54 | #endif 55 | 56 | // Init PC serial 57 | Serial.begin(115200); 58 | 59 | // Init module serial 60 | SerialS7XG.begin(115200, SERIAL_8N1, 34, 33); 61 | 62 | } 63 | 64 | void loop() { 65 | 66 | if (Serial.available()) { 67 | SerialS7XG.write(Serial.read()); 68 | } 69 | 70 | if (SerialS7XG.available()) { 71 | Serial.write(SerialS7XG.read()); 72 | } 73 | 74 | } -------------------------------------------------------------------------------- /keywords.txt: -------------------------------------------------------------------------------- 1 | ####################################### 2 | # Classes (KEYWORD1) 3 | ####################################### 4 | 5 | S7XG KEYWORD1 6 | 7 | ####################################### 8 | # Datatypes (KEYWORD1) 9 | ####################################### 10 | 11 | gps_message_t 12 | 13 | ####################################### 14 | # Methods and Functions (KEYWORD2) 15 | ####################################### 16 | 17 | begin KEYWORD2 18 | 19 | reset KEYWORD2 20 | sleep KEYWORD2 21 | wake KEYWORD2 22 | getResponse KEYWORD2 23 | getVersion KEYWORD2 24 | getHardware KEYWORD2 25 | getEUI KEYWORD2 26 | 27 | macSend KEYWORD2 28 | macJoinABP KEYWORD2 29 | macJoinOTAA KEYWORD2 30 | macSave KEYWORD2 31 | macJoined KEYWORD2 32 | macPower KEYWORD2 33 | macDatarate KEYWORD2 34 | macADR KEYWORD2 35 | macRetries KEYWORD2 36 | macSync KEYWORD2 37 | macChannelFrequency KEYWORD2 38 | macChannelStatus KEYWORD2 39 | macDutyCycle KEYWORD2 40 | macUpCounter KEYWORD2 41 | macDownCounter KEYWORD2 42 | macClass KEYWORD2 43 | macBand KEYWORD2 44 | txCycle KEYWORD2 45 | 46 | gpsInit KEYWORD2 47 | gpsPort KEYWORD2 48 | gpsFormat KEYWORD2 49 | gpsCycle KEYWORD2 50 | gpsMode KEYWORD2 51 | gpsData KEYWORD2 52 | gpsSleep KEYWORD2 53 | gpsWake KEYWORD2 54 | gpsReset KEYWORD2 55 | gpsSystem KEYWORD2 56 | gpsStart KEYWORD2 57 | 58 | hexlify KEYWORD2 59 | unhexlify KEYWORD2 60 | 61 | ####################################### 62 | # Instances (KEYWORD2) 63 | ####################################### 64 | 65 | 66 | ####################################### 67 | # Constants (LITERAL1) 68 | ####################################### 69 | 70 | S7XG_DR_SF12BW125_EU LITERAL1 71 | S7XG_DR_SF11BW125_EU LITERAL1 72 | S7XG_DR_SF10BW125_EU LITERAL1 73 | S7XG_DR_SF9BW125_EU LITERAL1 74 | S7XG_DR_SF8BW125_EU LITERAL1 75 | S7XG_DR_SF7BW125_EU LITERAL1 76 | S7XG_DR_SF7BW250_EU LITERAL1 77 | 78 | S7XG_DR_SF12BW125_CN LITERAL1 79 | S7XG_DR_SF11BW125_CN LITERAL1 80 | S7XG_DR_SF10BW125_CN LITERAL1 81 | S7XG_DR_SF9BW125_CN LITERAL1 82 | S7XG_DR_SF8BW125_CN LITERAL1 83 | S7XG_DR_SF7BW125_CN LITERAL1 84 | 85 | S7XG_DR_SF10BW125_US LITERAL1 86 | S7XG_DR_SF9BW125_US LITERAL1 87 | S7XG_DR_SF8BW125_US LITERAL1 88 | S7XG_DR_SF7BW125_US LITERAL1 89 | S7XG_DR_SF8BW500_US LITERAL1 90 | 91 | S7XG_MAC_CLASS_A LITERAL1 92 | S7XG_MAC_CLASS_C LITERAL1 93 | 94 | S7XG_GPS_MODE_IDLE LITERAL1 95 | S7XG_GPS_MODE_MANUAL LITERAL1 96 | S7XG_GPS_MODE_AUTO LITERAL1 97 | 98 | S7XG_GPS_FORMAT_RAW LITERAL1 99 | S7XG_GPS_FORMAT_IPSO LITERAL1 100 | S7XG_GPS_FORMAT_KIWI LITERAL1 101 | S7XG_GPS_FORMAT_UTC_POS LITERAL1 102 | 103 | S7XG_GPS_START_HOT LITERAL1 104 | S7XG_GPS_START_WARM LITERAL1 105 | S7XG_GPS_START_COLD LITERAL1 106 | 107 | S7XG_GPS_SYSTEM_GPS LITERAL1 108 | S7XG_GPS_SYSTEM_HYBRID LITERAL1 109 | -------------------------------------------------------------------------------- /library.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "S7XG", 3 | "keywords": "acsip,s76g,s78g,s76s,s78s,lora,lorawan,gps", 4 | "description": "AcSIP S76G and S78G LoRaWAN/GPS module library", 5 | "repository": { 6 | "type": "git", 7 | "url": "https://github.com/xoseperez/s7xg.git" 8 | }, 9 | "version": "0.1.0", 10 | "license": "LGPL-3.0", 11 | "frameworks": "arduino", 12 | "platforms": ["esp32"], 13 | "dependencies": [ 14 | ], 15 | "authors": { 16 | "name": "Xose Perez", 17 | "email": "xose.perez@gmail.com", 18 | "url": "http://tinkerman.cat", 19 | "maintainer": true 20 | }, 21 | "examples": [ 22 | "examples/*/*.ino" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /library.properties: -------------------------------------------------------------------------------- 1 | name=S7XG 2 | version=0.1.0 3 | author=Xose Pérez 4 | maintainer=Xose Pérez 5 | sentence=AcSIP S76G and S78G LoRaWAN/GPS module library 6 | paragraph= 7 | category=communication 8 | url=https://github.com/xoseperez/s7xg.git 9 | architectures=esp32 10 | includes=s7xg.h 11 | -------------------------------------------------------------------------------- /pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """ 3 | 4 | Referencing current branch in github README.md [1] 5 | This pre-commit hook [2] updates the README.md file's 6 | Travis badge with the current branch. Based on [4]. 7 | 8 | [1] http://stackoverflow.com/questions/18673694/referencing-current-branch-in-github-readme-md 9 | [2] http://www.git-scm.com/book/en/v2/Customizing-Git-Git-Hooks 10 | [3] https://docs.travis-ci.com/user/status-images/ 11 | [4] https://gist.github.com/dandye/dfe0870a6a1151c89ed9 12 | 13 | Copy this file to .git/hooks/ 14 | 15 | """ 16 | 17 | import os 18 | import sys 19 | import re 20 | 21 | from subprocess import call, check_output 22 | try: 23 | from urllib.parse import urlparse 24 | except ImportError: 25 | from urlparse import urlparse 26 | 27 | from fileinput import FileInput 28 | # https://github.com/python/cpython/commit/6cb7b659#diff-78790b53ff259619377058acd4f74672 29 | if sys.version_info[0] < 3: 30 | class FileInputCtx(FileInput): 31 | def __enter__(self): 32 | return self 33 | 34 | def __exit__(self, type, value, traceback): 35 | self.close() 36 | 37 | FileInput = FileInputCtx 38 | 39 | 40 | def run(cmd, cwd=None): 41 | out = check_output(cmd, cwd=cwd) 42 | out = out.decode("latin1").strip() 43 | 44 | return out 45 | 46 | 47 | def git_parse_remote(cwd=None, remote="origin"): 48 | remote_url = run([ 49 | "git", "config", "--local", 50 | "--get", "remote.{}.url".format(remote)], cwd) 51 | 52 | if remote_url.startswith("git"): 53 | _, _, repo = remote_url.partition(":") 54 | elif remote_url.startswith("https"): 55 | parsed = urlparse(remote_url) 56 | repo = parsed.path[1:] 57 | 58 | path = repo.replace(".git", "") 59 | return path.split("/") 60 | 61 | 62 | def git_branch(cwd=None): 63 | return run(["git", "rev-parse", "--abbrev-ref", "HEAD"], cwd) 64 | 65 | 66 | def get_version(base, version_h="library.properties"): 67 | version = "unknown" 68 | 69 | path = os.path.join(base, version_h) 70 | with open(path, "r") as version_f: 71 | for line in version_f: 72 | if line.startswith("version="): 73 | version = line.replace("version=", "").strip() 74 | break 75 | 76 | return version 77 | 78 | TEMPLATES = { 79 | "![travis]": "[![travis](https://travis-ci.org/{USER}/{REPO}.svg?branch={BRANCH})]" \ 80 | "(https://travis-ci.org/{USER}/{REPO})\n", 81 | "![version]": "[![version](https://img.shields.io/badge/version-{VERSION}-brightgreen.svg)](CHANGELOG.md)\n", 82 | "![branch]": "[![branch](https://img.shields.io/badge/branch-{BRANCH}-orange.svg)]" \ 83 | "(https://github.org/{USER}/{REPO}/tree/{BRANCH}/)\n", 84 | "![codacy]": "[![codacy](https://img.shields.io/codacy/grade/{CODACY}/{BRANCH}.svg)]" \ 85 | "(https://www.codacy.com/app/{USER}/{REPO}/dashboard)\n" 86 | } 87 | 88 | README = "README.md" 89 | 90 | if __name__ == "__main__": 91 | base = os.getcwd() 92 | 93 | user, repo = git_parse_remote() 94 | fmt = { 95 | "USER": user, 96 | "REPO": repo, 97 | "BRANCH": git_branch(), 98 | "VERSION": get_version(base), 99 | "CODACY": "7dfaab5c9ca44b3191f47d29cc2b99fa" 100 | } 101 | templates = [ 102 | (k, tmpl.format(**fmt)) 103 | for k, tmpl in TEMPLATES.items() 104 | ] 105 | 106 | def fmt_line(line): 107 | for match, tmpl in templates: 108 | if match in line: 109 | return tmpl 110 | 111 | return line 112 | 113 | path = os.path.join(base, README) 114 | 115 | with FileInput(path, inplace=True) as readme: 116 | for line in readme: 117 | sys.stdout.write(fmt_line(line)) 118 | 119 | sys.exit(call(["git", "add", README])) 120 | --------------------------------------------------------------------------------