Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
merge v1.1.0
  • Loading branch information
cujomalainey committed Jun 29, 2020
2 parents a9b61bf + 9146761 commit ce66d47
Show file tree
Hide file tree
Showing 56 changed files with 460 additions and 255 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

language: python
python:
- "2.7"
- "3.6"

sudo: false
cache:
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ An Implementation of the Ant+ Network on top of [ant-arduino](https://github.com

## News

* 6/28/2020 v2.0.0 of ant-arduino released with support for mbed and softdevices
* 8/20/2019 v1.0.0 released, master profiles now are available
* 10/1/2017 v0.1.0 Version released, library added to managers
* 9/24/2017 Proof of concept complete (for system design)
Expand Down
9 changes: 5 additions & 4 deletions library.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@
"type": "git",
"url": "https://github.com/cujomalainey/antplus-arduino.git"
},
"version": "1.0.0",
"frameworks": "arduino",
"platforms": "atmelavr, atmelsam, espressif32, espressif8266, intel_arc32, microchippic32, nordicnrf51, nordicnrf52, ststm32, timsp430, teensy",
"version": "1.1.0",
"frameworks": "*",
"platforms": "*",
"dependencies":
[
{
"name":"ANT"
"name":"ANT",
"version": ">=2.0.0"
}
]
}
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=ANTPLUS-Arduino
version=1.0.0
version=1.1.0
author=Curtis Malainey <[email protected]>
maintainer=Curtis Malainey <[email protected]>
sentence=Library for easy ANT+ integration
Expand Down
7 changes: 7 additions & 0 deletions platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,10 @@ platform = espressif32
framework = arduino
board = featheresp32
lib_deps = ANT

[env:nrf52_express]
board = adafruit_feather_nrf52840_s340
framework = arduino
platform = nordicnrf52
platform_packages = framework-arduinoadafruitnrf52 @ https://github.com/cujomalainey/Adafruit_nRF52_Arduino
lib_deps = https://github.com/cujomalainey/ant-arduino.git#develop
8 changes: 4 additions & 4 deletions src/BaseClasses/ANTPLUS_BaseDataPage.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ class BaseDataPage : virtual public CoreDataPage<T> {
#ifndef UNIT_TEST
protected:
#endif // UNIT_TEST
uint8_t get8BitValue(uint8_t byte, uint8_t mask = 0xFF, uint8_t shift = 0);
uint16_t get16BitValue(uint8_t lsb_byte, uint8_t msb_byte, uint16_t mask = 0xFFFF, uint8_t shift = 0);
uint32_t get24BitValue(uint8_t lsb_byte, uint8_t msb_byte, uint32_t mask = 0xFFFFFF, uint8_t shift = 0);
uint32_t get32BitValue(uint8_t lsb_byte, uint8_t msb_byte, uint32_t mask = 0xFFFFFFFF, uint8_t shift = 0);
uint8_t get8BitValue(uint8_t byte, uint8_t mask = 0xFF, uint8_t shift = 0) override;
uint16_t get16BitValue(uint8_t lsb_byte, uint8_t msb_byte, uint16_t mask = 0xFFFF, uint8_t shift = 0) override;
uint32_t get24BitValue(uint8_t lsb_byte, uint8_t msb_byte, uint32_t mask = 0xFFFFFF, uint8_t shift = 0) override;
uint32_t get32BitValue(uint8_t lsb_byte, uint8_t msb_byte, uint32_t mask = 0xFFFFFFFF, uint8_t shift = 0) override;
};

#endif // ANTPLUS_BASEDATAPAGE_h
8 changes: 4 additions & 4 deletions src/BaseClasses/ANTPLUS_BaseDataPageMsg.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ class BaseDataPageMsg : virtual public CoreDataPage<T> {
#ifndef UNIT_TEST
protected:
#endif // UNIT_TEST
uint8_t get8BitValue(uint8_t byte, uint8_t mask = 0xFF, uint8_t shift = 0);
uint16_t get16BitValue(uint8_t lsb_byte, uint8_t msb_byte, uint16_t mask = 0xFFFF, uint8_t shift = 0);
uint32_t get24BitValue(uint8_t lsb_byte, uint8_t msb_byte, uint32_t mask = 0xFFFFFF, uint8_t shift = 0);
uint32_t get32BitValue(uint8_t lsb_byte, uint8_t msb_byte, uint32_t mask = 0xFFFFFFFF, uint8_t shift = 0);
uint8_t get8BitValue(uint8_t byte, uint8_t mask = 0xFF, uint8_t shift = 0) override;
uint16_t get16BitValue(uint8_t lsb_byte, uint8_t msb_byte, uint16_t mask = 0xFFFF, uint8_t shift = 0) override;
uint32_t get24BitValue(uint8_t lsb_byte, uint8_t msb_byte, uint32_t mask = 0xFFFFFF, uint8_t shift = 0) override;
uint32_t get32BitValue(uint8_t lsb_byte, uint8_t msb_byte, uint32_t mask = 0xFFFFFFFF, uint8_t shift = 0) override;
void set8BitValue(uint8_t value, uint8_t byte, uint8_t mask = 0xFF, uint8_t shift = 0);
void set16BitValue(uint16_t value, uint8_t lsb_byte, uint8_t msb_byte, uint16_t mask = 0xFFFF, uint8_t shift = 0);
void set24BitValue(uint32_t value, uint8_t lsb_byte, uint8_t msb_byte, uint32_t mask = 0xFFFFFF, uint8_t shift = 0);
Expand Down
14 changes: 14 additions & 0 deletions src/BaseClasses/ANTPLUS_BaseMasterProfile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,17 @@ void BaseMasterProfile::begin() {
// send first datapage manually so we don't transmit 0s
transmitNextDataPage();
}

void BaseMasterProfile::transmitMsg(BaseDataPageMsg<BroadcastDataMsg> &msg) {
if (isRequestedPageAcknowledged() && isRequestedPagePending()) {
AcknowledgedDataMsg ack;
ack.setDataBuffer(msg.getDataBuffer());
send(ack);
} else {
send(msg);
}
}

void BaseMasterProfile::transmitMsg(BaseDataPageMsg<AcknowledgedDataMsg> &msg) {
send(msg);
}
16 changes: 11 additions & 5 deletions src/BaseClasses/ANTPLUS_BaseMasterProfile.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,29 @@
#define ANTPLUS_BASEMASTERPROFILE_h

#include <BaseClasses/ANTPLUS_BaseProfile.h>
#include <BaseClasses/ANTPLUS_BaseDataPageMsg.h>

class BaseMasterProfile : public BaseProfile {
public:
BaseMasterProfile(uint16_t deviceNumber, uint8_t transmissionType);
/**
* start profile transmission sequence
*/
virtual void begin();
virtual void begin() override;
protected:
/**
* Used to catch EVENT_TX and continue transmission pattern
* Also handles EVENT_TRANSFER_TX_COMPLETED for acknowledgement
*/
virtual void onChannelEventResponse(ChannelEventResponse& msg);
virtual void onChannelEventResponse(ChannelEventResponse& msg) override;
/**
* This function, when called, will transmit the next message in the broadcast pattern
*/
virtual void transmitNextDataPage() = 0;
/**
* Checks for RequestDataPage messages and handles them accordingly
*/
virtual void onAcknowledgedData(AcknowledgedData& msg);
virtual void onAcknowledgedData(AcknowledgedData& msg) override;
/**
* Checks with subclass to see if request is valid
*/
Expand All @@ -40,11 +41,16 @@ class BaseMasterProfile : public BaseProfile {
* returns true if the request is meant to be sent as a acknowledged message
*/
bool isRequestedPageAcknowledged();
/**
* Handles ack msg conversions for requests, all transmissions that are part of the broadcast pattern should be through this.
*/
void transmitMsg(BaseDataPageMsg<BroadcastDataMsg> &msg);
void transmitMsg(BaseDataPageMsg<AcknowledgedDataMsg> &msg);
private:
void handleRequestDataPage(AcknowledgedData& msg);
uint8_t _requestedPage;
uint8_t _requestedPage = 0;
uint8_t _requestedCount = 0;
bool _isRequestAcknowledged;
bool _isRequestAcknowledged = false;
bool _requestAcked = true;
};

Expand Down
2 changes: 1 addition & 1 deletion src/BaseClasses/ANTPLUS_BaseProfile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ void BaseProfile::checkProfileStatus() {
}

void BaseProfile::send(AcknowledgedDataMsg& msg) {
msg.setChannelNumber(_channel);
msg.setChannel(_channel);
_router->send(msg);
}

Expand Down
12 changes: 6 additions & 6 deletions src/BaseClasses/ANTPLUS_BaseProfile.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,12 +97,12 @@ class BaseProfile {
void setSearchTimeout(uint8_t counts);
private:
void checkProfileStatus();
AntPlusRouter* _router;
Callback<AntRxDataResponse&> _onDataPage;
Callback<AntRxDataResponse&> _onOtherDataPage;
Callback<ChannelEventResponse&> _onChannelEvent;
Callback<ChannelIdResponse&> _onChannelIdResponse;
uint8_t _channel;
AntPlusRouter* _router = NULL;
AntCallback<AntRxDataResponse&> _onDataPage;
AntCallback<AntRxDataResponse&> _onOtherDataPage;
AntCallback<ChannelEventResponse&> _onChannelEvent;
AntCallback<ChannelIdResponse&> _onChannelIdResponse;
uint8_t _channel = 0;
uint8_t _channelType = 0;
uint16_t _channelPeriod = 0;
uint8_t _channelStatus = 0;
Expand Down
2 changes: 1 addition & 1 deletion src/BaseClasses/ANTPLUS_CoreDataPage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ CoreDataPage<T>::CoreDataPage() : T() {
template<class T>
uint8_t CoreDataPage<T>::getDataPageNumber() {
// TODO handle shared channels
return this->getData(ANTPLUS_DEFAULT_DATAPAGE_BYTE);
return this->get8BitValue(ANTPLUS_DEFAULT_DATAPAGE_BYTE);
}

template<class T>
Expand Down
30 changes: 15 additions & 15 deletions src/MainClasses/ANTPLUS_CallbackWorkAround.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,76 +13,76 @@
*/

void onPacketErrorCallback(uint8_t error, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onPacketError(error);
}

void onAcknowledgedDataCallback(AcknowledgedData& msg, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onAcknowledgedData(msg);
}

void onAdvancedBurstDataCallback(AdvancedBurstData& msg, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onAdvancedBurstData(msg);
}

void onBroadcastDataCallback(BroadcastData& msg, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onBroadcastData(msg);
}

void onBurstTransferDataCallback(BurstTransferData& msg, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onBurstTransferData(msg);
}

void onAdvancedBurstCapabilitiesConfigurationCallback(AdvancedBurstCapabilitiesConfiguration& msg, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onAdvancedBurstCapabilitiesConfiguration(msg);
}

void onAntVersionCallback(AntVersion& msg, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onAntVersion(msg);
}

void onCapabilitiesCallback(Capabilities& msg, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onCapabilities(msg);
}

void onChannelEventResponseCallback(ChannelEventResponse& msg, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onChannelEventResponse(msg);
}

void onChannelIdResponseCallback(ChannelIdResponse& msg, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onChannelIdResponse(msg);
}

void onChannelStatusCallback(ChannelStatus& msg, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onChannelStatus(msg);
}

void onEncryptionModeParametersCallback(EncryptionModeParameters& msg, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onEncryptionModeParameters(msg);
}

void onEventFilterCallback(EventFilter& msg, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onEventFilter(msg);
}

void onSelectiveDataUpdateMaskSettingCallback(SelectiveDataUpdateMaskSetting& msg, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onSelectiveDataUpdateMaskSetting(msg);
}

void onStartUpMessageCallback(StartUpMessage& msg, uintptr_t data) {
AntPlusRouter* router = (AntPlusRouter*)data;
AntPlusRouter* router = reinterpret_cast<AntPlusRouter*>(data);
router->onStartUpMessage(msg);
}
10 changes: 2 additions & 8 deletions src/Profiles/BicycleSpeed/ANTPLUS_BicycleSpeedPrivateDefines.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,20 +30,14 @@
#define ANTPLUS_BICYCLESPEED_DATAPAGE_CUMULATIVEOPERATINGTIME_NUMBER 1

#define ANTPLUS_BICYCLESPEED_DATAPAGE_CUMULATIVEOPERATINGTIME_TIME_LSB_BYTE 1
#define ANTPLUS_BICYCLESPEED_DATAPAGE_CUMULATIVEOPERATINGTIME_TIME_MID_BYTE 2
#define ANTPLUS_BICYCLESPEED_DATAPAGE_CUMULATIVEOPERATINGTIME_TIME_MSB_BYTE 3

#define ANTPLUS_BICYCLESPEED_DATAPAGE_CUMULATIVEOPERATINGTIME_TIME_MID_SHIFT 8
#define ANTPLUS_BICYCLESPEED_DATAPAGE_CUMULATIVEOPERATINGTIME_TIME_MSB_SHIFT 16

/* ManufacturerID */
#define ANTPLUS_BICYCLESPEED_DATAPAGE_MANUFACTURERID_NUMBER 2

#define ANTPLUS_BICYCLESPEED_DATAPAGE_MANUFACTURERINFORMATION_MANUFACTUREREID_BYTE 1
#define ANTPLUS_BICYCLESPEED_DATAPAGE_MANUFACTURERINFORMATION_SERIALNUMBERLSB_BYTE 2
#define ANTPLUS_BICYCLESPEED_DATAPAGE_MANUFACTURERINFORMATION_SERIALNUMBERMSB_BYTE 3

#define ANTPLUS_BICYCLESPEED_DATAPAGE_MANUFACTURERINFORMATION_SERIALNUMBERMSB_SHIFT 8
#define ANTPLUS_BICYCLESPEED_DATAPAGE_MANUFACTURERINFORMATION_SERIALNUMBER_LSB_BYTE 2
#define ANTPLUS_BICYCLESPEED_DATAPAGE_MANUFACTURERINFORMATION_SERIALNUMBER_MSB_BYTE 3

/* Product ID */
#define ANTPLUS_BICYCLESPEED_DATAPAGE_PRODUCTID_NUMBER 3
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#include <Profiles/BicycleSpeed/DataPages/Base/ANTPLUS_BicycleSpeedBaseBatteryStatus.h>
#include <Profiles/BicycleSpeed/ANTPLUS_BicycleSpeedPrivateDefines.h>

template<class T>
BicycleSpeedBaseBatteryStatus<T>::BicycleSpeedBaseBatteryStatus() : CoreDataPage<T>() {
}

template<class T>
uint8_t BicycleSpeedBaseBatteryStatus<T>::getFractionalBatteryVoltage() {
return this->get8BitValue(
ANTPLUS_BICYCLESPEED_DATAPAGE_BATTERYSTATUS_FRACTIONALBATTERYVOLTAGE_BYTE);
}

template<class T>
uint8_t BicycleSpeedBaseBatteryStatus<T>::getCoarseBatteryVoltage() {
return this->get8BitValue(
ANTPLUS_BICYCLESPEED_DATAPAGE_BATTERYSTATUS_COARSEBATTERYVOLTAGE_BYTE,
ANTPLUS_BICYCLESPEED_DATAPAGE_BATTERYSTATUS_COARSEBATTERYVOLTAGE_MASK);
}

template<class T>
uint8_t BicycleSpeedBaseBatteryStatus<T>::getBatteryStatus() {
return this->get8BitValue(
ANTPLUS_BICYCLESPEED_DATAPAGE_BATTERYSTATUS_BATTERYSTATUS_BYTE,
ANTPLUS_BICYCLESPEED_DATAPAGE_BATTERYSTATUS_BATTERYSTATUS_MASK,
ANTPLUS_BICYCLESPEED_DATAPAGE_BATTERYSTATUS_BATTERYSTATUS_SHIFT);
}

template class BicycleSpeedBaseBatteryStatus<BroadcastData>;
template class BicycleSpeedBaseBatteryStatus<BroadcastDataMsg>;
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#ifndef ANTPLUS_BICYCLESPEEDBASEBATTERYSTATUS_h
#define ANTPLUS_BICYCLESPEEDBASEBATTERYSTATUS_h

#include <BaseClasses/ANTPLUS_CoreDataPage.h>

#include "ANT.h"

template<class T>
class BicycleSpeedBaseBatteryStatus : virtual public CoreDataPage<T> {
public:
BicycleSpeedBaseBatteryStatus();
uint8_t getFractionalBatteryVoltage();
uint8_t getCoarseBatteryVoltage();
uint8_t getBatteryStatus();
};

#endif // ANTPLUS_BICYCLESPEEDBASEBATTERYSTATUS_h
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#include <Profiles/BicycleSpeed/DataPages/Base/ANTPLUS_BicycleSpeedBaseCumulativeOperatingTime.h>
#include <Profiles/BicycleSpeed/ANTPLUS_BicycleSpeedPrivateDefines.h>

template<class T>
BicycleSpeedBaseCumulativeOperatingTime<T>::BicycleSpeedBaseCumulativeOperatingTime() : CoreDataPage<T>() {
}

template<class T>
uint32_t BicycleSpeedBaseCumulativeOperatingTime<T>::getCumulativeOperatingTime() {
return this->get24BitValue(
ANTPLUS_BICYCLESPEED_DATAPAGE_CUMULATIVEOPERATINGTIME_TIME_LSB_BYTE,
ANTPLUS_BICYCLESPEED_DATAPAGE_CUMULATIVEOPERATINGTIME_TIME_MSB_BYTE);
}

template class BicycleSpeedBaseCumulativeOperatingTime<BroadcastData>;
template class BicycleSpeedBaseCumulativeOperatingTime<BroadcastDataMsg>;
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#ifndef ANTPLUS_BICYCLESPEEDBASECUMULITIVEOPERATINGTIME_h
#define ANTPLUS_BICYCLESPEEDBASECUMULITIVEOPERATINGTIME_h

#include <BaseClasses/ANTPLUS_CoreDataPage.h>

#include "ANT.h"

template<class T>
class BicycleSpeedBaseCumulativeOperatingTime : virtual public CoreDataPage<T> {
public:
BicycleSpeedBaseCumulativeOperatingTime();
uint32_t getCumulativeOperatingTime(); // only 24 bits
};

#endif // ANTPLUS_BICYCLESPEEDBASECUMULITIVEOPERATINGTIME_h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
class BicycleSpeedBaseMainDataPage : public BaseDataPage<BroadcastData> {
public:
BicycleSpeedBaseMainDataPage(AntRxDataResponse& dp);
uint8_t getDataPageNumber();
uint8_t getDataPageNumber() override;
uint8_t getPageChangeToggle();
uint16_t getBikeSpeedEventTime();
uint16_t getCumulativeSpeedRevolutionCount();
Expand Down
Loading

0 comments on commit ce66d47

Please sign in to comment.