Skip to content

Commit

Permalink
Fix #222: change all LoRaWAN classes to use Arduino_LoRaWAN_network
Browse files Browse the repository at this point in the history
  • Loading branch information
terrillmoore committed Oct 3, 2019
1 parent 5d531f2 commit 2e51144
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 154 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,7 @@ void Arduino_LoRaWAN::SetReceiveBufferBufferCb(
In order to allow code to be portable across networks and regions, we've done a lot of work with abstraction classes. If you're curious, here's a somewhat simplified diagram.
[![**LoRaWAN class structure**](http://www.plantuml.com/plantuml/png/bPNFRkCs4CRFcgSOvBANjToaQ92uFQpXzG8fx7JhTD5ZCA8c4XkH5FXdNM6xxrv9hBfg6idmKJFy3R-Fd17VEK_M1rN1yWt0tkIXubMo8S-Q7dVcGB-lxzEw8jslWGz12o-DNa7oiGj-sk_GyXDRreBHcM05uvEn62kiLl-KG56HSvXBAYof51BOcBgniYXzM-g16Ka8eshIZTG5xkuss_k7BJx9Yf4y9ANtjLkjbij2-Z9aQRjsgOIG2z7liupRBTOs3rARHQlDjoeK9B0ElZIstUGtjhR1lJ6Mt-9-ixd3ZR6riTJvINuELODNtrtU0jmRpsviK2egsA7KUDYkz--tgSgHB6F1cbkSSymQhCdvJhelfOkwfVO64byoEhQVsI9vx7oqBex7ux-7sdiPFjuYwHmBIraMYp4abbse-jgV3ZkN0hnP0fGoPsHL-mOLguoj0wX9F5F1E9p2SFRayA8pF2HmIEnaPias5_W5A7FUal3neeQLGmV0YVoZ8b5ApRy-PkIutp1D_nky03Y11dTx-SE87KLFmYS5Ug_7skBtjAm8SBYvlXaHCN0nGumzV0lC4HHkhov7H0pC4kxswliH4GDpXDGtrzSZ8WRch0Ey2E9FVoqMyzT-6XbV1CpMYknygy1ykYsHfjCDeurdx7z0Q3HMKZy3ue4BsNuvhbXqSqqUkxzIDyrUAWRi9ltk_HQDxHAATDwX3Anpx2e2JFYDZgQxx7mkkZoVYmrsFXVRx7mkDXl0fFLNBYgcOTBrMKWqV1OIlPw5H9lJo5S0JOfTJO9nBuICJnP-6QPGV3HLHLd5lsH_iF0n-l8T7RKj83uOnNs3Llodz0sMCizP_zXbGjRpx31dgl0eVOavVvQ24R1bz9CiGdpx-YVdms6z1yJWgE1qrCulL7Mt_3zDa4vDMJoEIG_ZqSDxzaTZd-U6RsBwKlmcE7tbx5zN0L_XNOi5LVqD)](https://www.plantuml.com/plantuml/svg/bPNFRkCs4CRFcgSOvBANjToaQ92uFQpXzG8fx7JhTD5ZCA8c4XkH5FXdNM6xxrv9hBfg6idmKJFy3R-Fd17VEK_M1rN1yWt0tkIXubMo8S-Q7dVcGB-lxzEw8jslWGz12o-DNa7oiGj-sk_GyXDRreBHcM05uvEn62kiLl-KG56HSvXBAYof51BOcBgniYXzM-g16Ka8eshIZTG5xkuss_k7BJx9Yf4y9ANtjLkjbij2-Z9aQRjsgOIG2z7liupRBTOs3rARHQlDjoeK9B0ElZIstUGtjhR1lJ6Mt-9-ixd3ZR6riTJvINuELODNtrtU0jmRpsviK2egsA7KUDYkz--tgSgHB6F1cbkSSymQhCdvJhelfOkwfVO64byoEhQVsI9vx7oqBex7ux-7sdiPFjuYwHmBIraMYp4abbse-jgV3ZkN0hnP0fGoPsHL-mOLguoj0wX9F5F1E9p2SFRayA8pF2HmIEnaPias5_W5A7FUal3neeQLGmV0YVoZ8b5ApRy-PkIutp1D_nky03Y11dTx-SE87KLFmYS5Ug_7skBtjAm8SBYvlXaHCN0nGumzV0lC4HHkhov7H0pC4kxswliH4GDpXDGtrzSZ8WRch0Ey2E9FVoqMyzT-6XbV1CpMYknygy1ykYsHfjCDeurdx7z0Q3HMKZy3ue4BsNuvhbXqSqqUkxzIDyrUAWRi9ltk_HQDxHAATDwX3Anpx2e2JFYDZgQxx7mkkZoVYmrsFXVRx7mkDXl0fFLNBYgcOTBrMKWqV1OIlPw5H9lJo5S0JOfTJO9nBuICJnP-6QPGV3HLHLd5lsH_iF0n-l8T7RKj83uOnNs3Llodz0sMCizP_zXbGjRpx31dgl0eVOavVvQ24R1bz9CiGdpx-YVdms6z1yJWgE1qrCulL7Mt_3zDa4vDMJoEIG_ZqSDxzaTZd-U6RsBwKlmcE7tbx5zN0L_XNOi5LVqD "Click for SVG version")
[![**LoRaWAN class structure**](http://www.plantuml.com/plantuml/png/XPPFRzj64CNFcayny2MNYAfTrB3L7Y8e2k12SbEvGO_6S3acjzu_nFw9AgJvxYMreS7OMVh8cVtDlhVxHEgT3-H2r0eMRm1sjegAbxCr1JPqlxLx-djrMxIAp6aDV8X616dD4cOV--AdtHOTFx1Z8nYzZKumFbY7QS9o-Mq42aNUOoMfTgGBWBLjZqxMJUWctJ4Z2M5rI-OeJOtRc_Nczcw33r8nKe1P4qBhbyl5efQXYMNHhLre8UHSdBPPfDtcArT5QUoyanOw4HfW5KDZNRV7N-pS4NVMEdwBk_Nw1jVMjTPHxsRsUrH7lFZf_1hWrWRsOtjIKyqUfS7zPhLxlobqXUGOQpRSuLnXUSIMVEYLXqRw95kQO64M6aRFxZCxf82zZSx4uN1uEjAJbU7XBPAfi7PKbcaOmyonZ-eq-zD-wmk0Dmk0HbQChDjmHCswPES1MXAFL3CEXp2SF7aywmqF3HmQMrawSiSp_09K-k18X7HDmyhX_k6L_hqcqKZ3VzwNvFcqOL5yNpm3U0MD_lhybn4xghuAloem13FMbfxpiXB0yUhoQaIambcU-Dx3Ks6Ae7XzSJuYKc6IyDSNFu-8L9WYfBcwl1mHgJ1b7U1P4N_xRpwVllOCaha8c9oLsEcem7Ix6r4K-S0O6nXFxn-q1fKqZu2uvrfsJvuLYy0LKi3-fIGLOv2Q0VjV-itx3LhNDpIPgaSPs5JOJymTgU5miEuH89lBP3WNmcak7yLfBX_8QIuVosak7qw0hFMNzpXaDEiwZsGDvv6irpoIjPb7ic5EI2PFFquntgRkL8upGIwUalmZ4zDQu2k08Ss-9S6u4qAcZp9-6NuLugDLYah5VvJ_i0Yf-loFmiWJ8DvPpIVjYl-LuOYDh2esl_QTM9vuzbWnAJp8q635dwLWm0un3xAEwUkElRqF-zKE4AEdUcmJdedgW_f24XGPq-b4NYp_2k_OL56h_m40)](https://www.plantuml.com/plantuml/svg/XPPFRzj64CNFcayny2MNYAfTrB3L7Y8e2k12SbEvGO_6S3acjzu_nFw9AgJvxYMreS7OMVh8cVtDlhVxHEgT3-H2r0eMRm1sjegAbxCr1JPqlxLx-djrMxIAp6aDV8X616dD4cOV--AdtHOTFx1Z8nYzZKumFbY7QS9o-Mq42aNUOoMfTgGBWBLjZqxMJUWctJ4Z2M5rI-OeJOtRc_Nczcw33r8nKe1P4qBhbyl5efQXYMNHhLre8UHSdBPPfDtcArT5QUoyanOw4HfW5KDZNRV7N-pS4NVMEdwBk_Nw1jVMjTPHxsRsUrH7lFZf_1hWrWRsOtjIKyqUfS7zPhLxlobqXUGOQpRSuLnXUSIMVEYLXqRw95kQO64M6aRFxZCxf82zZSx4uN1uEjAJbU7XBPAfi7PKbcaOmyonZ-eq-zD-wmk0Dmk0HbQChDjmHCswPES1MXAFL3CEXp2SF7aywmqF3HmQMrawSiSp_09K-k18X7HDmyhX_k6L_hqcqKZ3VzwNvFcqOL5yNpm3U0MD_lhybn4xghuAloem13FMbfxpiXB0yUhoQaIambcU-Dx3Ks6Ae7XzSJuYKc6IyDSNFu-8L9WYfBcwl1mHgJ1b7U1P4N_xRpwVllOCaha8c9oLsEcem7Ix6r4K-S0O6nXFxn-q1fKqZu2uvrfsJvuLYy0LKi3-fIGLOv2Q0VjV-itx3LhNDpIPgaSPs5JOJymTgU5miEuH89lBP3WNmcak7yLfBX_8QIuVosak7qw0hFMNzpXaDEiwZsGDvv6irpoIjPb7ic5EI2PFFquntgRkL8upGIwUalmZ4zDQu2k08Ss-9S6u4qAcZp9-6NuLugDLYah5VvJ_i0Yf-loFmiWJ8DvPpIVjYl-LuOYDh2esl_QTM9vuzbWnAJp8q635dwLWm0un3xAEwUkElRqF-zKE4AEdUcmJdedgW_f24XGPq-b4NYp_2k_OL56h_m40 "Click for SVG version")
As the diagram shows, Catena::LoRaWAN objects are primarily `Arduino_LoRaWAN` derivatives, but they also can be viewed as `McciCatena::cPollableObject` instances, and therefore can participate in [polling](#polling-framework).
Expand Down Expand Up @@ -1261,6 +1261,7 @@ This sketch demonstrates the use of the Catena FSM class to implement the `Turns

- HEAD includes the following changes.

- [#222](https://github.com/mcci-catena/Catena-Arduino-Platform/issues/222) Use `Arduino_LoRaWAN_network` consistently as base for `LoRaWAN` classes. (0.17.0.20)
- [#213](https://github.com/mcci-catena/Catena-Arduino-Platform/issues/213) Vbat voltage read is inaccurate on STM32L0 platform. (0.17.0.12)
- [#211](https://github.com/mcci-catena/Catena-Arduino-Platform/issues/211) `Catena_Si1133` cannot be copied or moved. (0.17.0.11)
- [#208](https://github.com/mcci-catena/Catena-Arduino-Platform/issues/208) Add `McciCatena::cTimer` class to simplify timing. (0.17.0.10)
Expand Down
23 changes: 14 additions & 9 deletions assets/Catena_LoRaWAN.plantuml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ Module: Catena_LoRaWAN.plantuml
Function:
PlantUML reference source for Catena::LoRaWAN class diagram.
Copyright:
See accompanying LICENSE file at
https:://github.com/mcci-catena/Catena-Arduino-Platform
Author:
Terry Moore, MCCI Corporation July 2019
Expand Down Expand Up @@ -50,6 +50,8 @@ note right on link
by IDE or command line
end note

class Arduino_LoRaWAN_network

Arduino_LoRaWAN_ttn_base <|-- Arduino_LoRaWAN_ttn_eu868
Arduino_LoRaWAN_ttn_base <|-- Arduino_LoRaWAN_ttn_us915
Arduino_LoRaWAN_ttn_base <|-- Arduino_LoRaWAN_ttn_au921
Expand All @@ -61,6 +63,14 @@ Arduino_LoRaWAN_ttn_us915 <|.. Arduino_LoRaWAN_ttn
Arduino_LoRaWAN_ttn_au921 <|.. Arduino_LoRaWAN_ttn
Arduino_LoRaWAN_ttn_as923 <|.. Arduino_LoRaWAN_ttn
Arduino_LoRaWAN_ttn_in866 <|.. Arduino_LoRaWAN_ttn

Arduino_LoRaWAN_machineQ <|.. Arduino_LoRaWAN_network
note right on link
Network selected at compile time
by IDE or command line.
end note
Arduino_LoRaWAN_ttn <|.. Arduino_LoRaWAN_network

}

namespace McciCatena {
Expand All @@ -69,19 +79,14 @@ class cPollableObject
class Catena::LoRaWAN
note right
Some complexity hidden;
Subclasses deal with device
Subclasses deal with device
configuration and FRAM
usage.
end note

cPollableObject <|- Catena::LoRaWAN

.Arduino_LoRaWAN_machineQ <|.. Catena::LoRaWAN
note right on link
Network selected at compile time
by IDE or command line.
end note
.Arduino_LoRaWAN_ttn <|.. Catena::LoRaWAN
.Arduino_LoRaWAN_network <|.. Catena::LoRaWAN

}
@enduml
46 changes: 2 additions & 44 deletions src/Catena4420.h
Original file line number Diff line number Diff line change
@@ -1,39 +1,15 @@
/* Catena4420.h Wed Dec 05 2018 14:20:58 chwon */

/*
Module: Catena4420.h
Function:
class Catena4420 (Aduino header file)
Version:
V0.12.0 Wed Dec 05 2018 14:20:58 chwon Edit level 2
Copyright notice:
This file copyright (C) 2016, 2018 by
MCCI Corporation
3520 Krums Corners Road
Ithaca, NY 14850
See LICENSE file accompanying this project.
An unpublished work. All rights reserved.
This file is proprietary information, and may not be disclosed or
copied without the prior permission of MCCI Corporation.
Author:
Terry Moore, MCCI Corporation December 2016
Revision history:
0.4.0 Sun Dec 4 2016 23:45:17 tmm
Module created.
0.11.0 Wed Nov 21 2018 13:41:46 chwon
Add CatenaName() method.
0.12.0 Wed Dec 05 2018 14:20:58 chwon
Add getCpuIdPlatformTable() method override.
Terry Moore, MCCI Corporation December 2016
*/

Expand All @@ -44,8 +20,6 @@ Revision history:
# include "CatenaFeatherM0.h"
#endif

#include <Arduino_LoRaWAN_ttn.h>

namespace McciCatena {

class Catena4420 : public CatenaFeatherM0
Expand Down Expand Up @@ -95,26 +69,10 @@ class Catena4420::LoRaWAN : public CatenaFeatherM0::LoRaWAN
*/
LoRaWAN() {};

/*
|| the begin function loads data from the local
|| platform's stable storage and initializes
|| the connection.
*/
// bool begin(CatenaFeatherM0 *pCatena4420);

protected:
/*
|| we use the CatenaFeatherM0 defaults
*/
// ProvisioningStyle GetProvisioningStyle(void);

// bool GetAbpProvisioningInfo(
// AbpProvisioningInfo *pProvisioningInfo
// );

// bool GetOtaaProvisioningInfo(
// OtaaProvisioningInfo *pProvisioningInfo
// );

private:
};
Expand Down
2 changes: 1 addition & 1 deletion src/CatenaBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ Copyright notice:
#define CATENA_ARDUINO_PLATFORM_VERSION_CALC(major, minor, patch, local) \
(((major) << 24u) | ((minor) << 16u) | ((patch) << 8u) | (local))

#define CATENA_ARDUINO_PLATFORM_VERSION CATENA_ARDUINO_PLATFORM_VERSION_CALC(0, 17, 0, 12) /* v0.17.0.12 */
#define CATENA_ARDUINO_PLATFORM_VERSION CATENA_ARDUINO_PLATFORM_VERSION_CALC(0, 17, 0, 20) /* v0.17.0.20 */

#define CATENA_ARDUINO_PLATFORM_VERSION_GET_MAJOR(v) \
(((v) >> 24u) & 0xFFu)
Expand Down
45 changes: 6 additions & 39 deletions src/CatenaFeatherM0.h
Original file line number Diff line number Diff line change
@@ -1,36 +1,15 @@
/* CatenaFeatherM0.h Wed Dec 05 2018 14:12:40 chwon */

/*
Module: CatenaFeatherM0.h
Module: CateenaFeatherM0.h
Function:
Class CatenaFeatherM0
Version:
V0.12.0 Wed Dec 05 2018 14:12:40 chwon Edit level 3
Copyright notice:
This file copyright (C) 2016-2018 by
MCCI Corporation
3520 Krums Corners Road
Ithaca, NY 14850
An unpublished work. All rights reserved.
This file is proprietary information, and may not be disclosed or
copied without the prior permission of MCCI Corporation.
See LICENSE file accompanying this project.
Author:
Terry Moore, MCCI Corporation December 2016
Revision history:
0.4.0 Sun Dec 4 2016 19:57:13 tmm
Module created.
0.12.0 Wed Dec 05 2018 14:12:41 chwon
Add CatenaFeatherM0::begin() and override provisioning stuff.
Terry Moore, MCCI Corporation December 2016
*/

Expand All @@ -43,19 +22,7 @@ Revision history:
# include "CatenaSamd21.h"
#endif

//#define ARDUINO_LORAWAN_NETWORK_MACHINEQ 1

#ifdef ARDUINO_LORAWAN_NETWORK_TTN
# include <Arduino_LoRaWAN_ttn.h>
using Arduino_LoRaWAN_Network = Arduino_LoRaWAN_ttn;
#elif defined(ARDUINO_LORAWAN_NETWORK_MACHINEQ)
# include <Arduino_LoRaWAN_machineQ.h>
using Arduino_LoRaWAN_Network = Arduino_LoRaWAN_machineQ;
#else
// **** default **** : assume TTN
# include <Arduino_LoRaWAN_ttn.h>
using Arduino_LoRaWAN_Network = Arduino_LoRaWAN_ttn;
#endif
#include <Arduino_LoRaWAN_network.h>

namespace McciCatena {

Expand Down Expand Up @@ -107,11 +74,11 @@ class CatenaFeatherM0 : public CatenaSamd21
private:
};

class CatenaFeatherM0::LoRaWAN : public Arduino_LoRaWAN_Network,
class CatenaFeatherM0::LoRaWAN : public Arduino_LoRaWAN_network,
public cPollableObject
{
public:
using Super = Arduino_LoRaWAN_Network;
using Super = Arduino_LoRaWAN_network;

/*
|| the constructor.
Expand Down
36 changes: 4 additions & 32 deletions src/CatenaStm32L0.h
Original file line number Diff line number Diff line change
@@ -1,44 +1,16 @@
/* CatenaStm32L0.h Fri Dec 28 2018 14:03:19 chwon */

/*
Module: CatenaStm32L0.h
Function:
Class CatenaStm32L0
Version:
V0.13.0 Fri Dec 28 2018 14:03:19 chwon Edit level 3
Copyright notice:
This file copyright (C) 2017-2018 by
MCCI Corporation
3520 Krums Corners Road
Ithaca, NY 14850
An unpublished work. All rights reserved.
This file is proprietary information, and may not be disclosed or
copied without the prior permission of MCCI Corporation.
See LICENSE file accompanying this project.
Author:
ChaeHee Won, MCCI Corporation October 2017
Revision history:
0.6.0 Fri Oct 13 2017 15:19:30 chwon
Module created.
0.11.0 Mon Nov 19 2018 12:11:25 chwon
Add Sleep() method override and add m_Rtc in the private context.
0.12.0 Wed Dec 05 2018 14:10:13 chwon
Remove GetSysEUI() and GetPlatformForID() methods override.
Add getFRAM() method override.
0.13.0 Fri Dec 28 2018 14:03:19 chwon
Add ReadAnalog() method and add CatenaStm32L0_ReadAnalog() prototype.
*/

#ifndef _CATENASTM32L0_H_ /* prevent multiple includes */
Expand All @@ -58,7 +30,7 @@ Revision history:
# include "CatenaStm32L0Rtc.h"
#endif

#include <Arduino_LoRaWAN_ttn.h>
#include <Arduino_LoRaWAN_network.h>

namespace McciCatena {

Expand Down Expand Up @@ -138,11 +110,11 @@ class CatenaStm32L0 : public CatenaStm32
McciCatena::CatenaStm32L0Rtc m_Rtc;
};

class CatenaStm32L0::LoRaWAN : public Arduino_LoRaWAN_ttn,
class CatenaStm32L0::LoRaWAN : public Arduino_LoRaWAN_network,
public McciCatena::cPollableObject
{
public:
using Super = Arduino_LoRaWAN_ttn;
using Super = Arduino_LoRaWAN_network;

/*
|| the constructor.
Expand Down
33 changes: 5 additions & 28 deletions src/CatenaWingFram2k.h
Original file line number Diff line number Diff line change
@@ -1,40 +1,17 @@
/* CatenaWingFram2k.h Wed Dec 05 2018 14:15:16 chwon */

/*
Module: CatenaWingFram2k.h
Function:
class CatenaWingFram2k: CatenaBase Platform to represent a Catena
Feather Wing with 2k FRAM and the DIO1>D6 loopback.
Version:
V0.12.0 Wed Dec 05 2018 14:15:17 chwon Edit level 3
Feather Wing with 2k FRAM and the DIO1>D6 loopback.
Copyright notice:
This file copyright (C) 2017-2018 by
MCCI Corporation
3520 Krums Corners Road
Ithaca, NY 14850
See LICENSE file accompanying this project.
An unpublished work. All rights reserved.
This file is proprietary information, and may not be disclosed or
copied without the prior permission of MCCI Corporation.
Author:
Terry Moore, MCCI Corporation March 2017
Revision history:
0.5.0 Sun Mar 12 2017 18:16:07 tmm
Module created.
0.12.0 Wed Dec 05 2018 14:15:17 chwon
Use CatenaSamd21 super class instead of CatenaFeatherM0LoRa class.
Remove GetSysEUI() and GetPlatformForID() methods override.
Add ReadVbat() and add getFRAM() method override.
*/

#ifndef _CATENAWINGFRAM2K_H_ /* prevent multiple includes */
Expand All @@ -50,7 +27,7 @@ Revision history:
# include "Catena_Fram2k.h"
#endif

#include <Arduino_LoRaWAN_ttn.h>
#include <Arduino_LoRaWAN_network.h>

//
// TODO(tmm@mcci.com)
Expand Down Expand Up @@ -126,11 +103,11 @@ class CatenaWingFram2k : public CatenaSamd21
|| The LoRaWAN class for the Catena Wings. Needed because we have a
|| specific storage implementation and pin table.
*/
class CatenaWingFram2k::LoRaWAN : public Arduino_LoRaWAN_ttn,
class CatenaWingFram2k::LoRaWAN : public Arduino_LoRaWAN_network,
public McciCatena::cPollableObject
{
public:
using Super = Arduino_LoRaWAN_ttn;
using Super = Arduino_LoRaWAN_network;

/*
|| the constructor. We don't do anything at this level, the
Expand Down

0 comments on commit 2e51144

Please sign in to comment.