Skip to content

Commit

Permalink
Lev: fixup datapage structure
Browse files Browse the repository at this point in the history
  • Loading branch information
cujomalainey committed Feb 3, 2022
1 parent eac2ae0 commit e5a2627
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 16 deletions.
12 changes: 8 additions & 4 deletions src/Profiles/Lev/DataPages/ANTPLUS_LevBaseMainDataPage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@
LevBaseMainDataPage::LevBaseMainDataPage(AntRxDataResponse& dp) :
BaseDataPage<BroadcastData>(dp) {}

LevBaseMainDataPageMsg::LevBaseMainDataPageMsg(uint8_t dataPageNumber) :
BaseDataPageMsg<AcknowledgedDataMsg>() {
setDataBuffer(_buffer);
set8BitValue(dataPageNumber, ANTPLUS_DEFAULT_DATAPAGE_BYTE);
template<class T>
LevBaseMainDataPageMsg<T>::LevBaseMainDataPageMsg(uint8_t dataPageNumber) :
BaseDataPageMsg<T>() {
this->setDataBuffer(_buffer);
this->set8BitValue(dataPageNumber, ANTPLUS_DEFAULT_DATAPAGE_BYTE);
}

template class LevBaseMainDataPageMsg<BroadcastDataMsg>;
template class LevBaseMainDataPageMsg<AcknowledgedDataMsg>;
3 changes: 2 additions & 1 deletion src/Profiles/Lev/DataPages/ANTPLUS_LevBaseMainDataPage.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ class LevBaseMainDataPage : public BaseDataPage<BroadcastData> {
explicit LevBaseMainDataPage(AntRxDataResponse& dp);
};

class LevBaseMainDataPageMsg : public BaseDataPageMsg<AcknowledgedDataMsg> {
template<class T>
class LevBaseMainDataPageMsg : public BaseDataPageMsg<T> {
public:
explicit LevBaseMainDataPageMsg(uint8_t dataPageNumber);
protected:
Expand Down
39 changes: 34 additions & 5 deletions src/Profiles/Lev/DataPages/ANTPLUS_LevCapabilities.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,50 @@
#define WHEELCIRCUMFERENCE_MSB_BYTE 4
#define WHEELCIRCUMFERENCE_MASK 0xF

LevCapabilities::LevCapabilities(AntRxDataResponse& dp) :
LevBaseMainDataPage(dp) {}
template<class T>
LevBaseCapabilities<T>::LevBaseCapabilities() : CoreDataPage<T>() {}

uint8_t LevCapabilities::getNumberOfAssistModesSupported() {
template<class T>
uint8_t LevBaseCapabilities<T>::getNumberOfAssistModesSupported() {
return this->get8BitValue(TRAVELMODESSUPPORTED_BYTE,
TRAVELMODESSUPPORTED_NUMBERASSISTMODES_MASK,
TRAVELMODESSUPPORTED_NUMBERASSISTMODES_SHIFT);
}

uint8_t LevCapabilities::getNumberOfRegenerativeModesSupported() {
template<class T>
uint8_t LevBaseCapabilities<T>::getNumberOfRegenerativeModesSupported() {
return this->get8BitValue(TRAVELMODESSUPPORTED_BYTE,
TRAVELMODESSUPPORTED_NUMBERREGENERATIVEMODES_MASK);
}

uint16_t LevCapabilities::getWheelCircumference() {
template<class T>
uint16_t LevBaseCapabilities<T>::getWheelCircumference() {
return this->get16BitValue(WHEELCIRCUMFERENCE_LSB_BYTE,
WHEELCIRCUMFERENCE_MSB_BYTE, WHEELCIRCUMFERENCE_MASK);
}

template class LevBaseCapabilities<BroadcastData>;
template class LevBaseCapabilities<BroadcastDataMsg>;

LevCapabilities::LevCapabilities(AntRxDataResponse& dp) :
LevBaseMainDataPage(dp), LevBaseCapabilities<BroadcastData>() {}

LevCapabilitiesMsg::LevCapabilitiesMsg() :
LevBaseMainDataPageMsg<BroadcastDataMsg>(LEVCAPABILITIES_NUMBER),
LevBaseCapabilities<BroadcastDataMsg>() {}

void LevCapabilitiesMsg::setNumberOfAssistModesSupported(uint8_t modes) {
set8BitValue(modes, TRAVELMODESSUPPORTED_BYTE,
TRAVELMODESSUPPORTED_NUMBERASSISTMODES_MASK,
TRAVELMODESSUPPORTED_NUMBERASSISTMODES_SHIFT);
}

void LevCapabilitiesMsg::setNumberOfRegenerativeModesSupported(uint8_t modes) {
set8BitValue(modes, TRAVELMODESSUPPORTED_BYTE,
TRAVELMODESSUPPORTED_NUMBERREGENERATIVEMODES_MASK);
}

void LevCapabilitiesMsg::setWheelCircumference(uint16_t circumference) {
set16BitValue(circumference, WHEELCIRCUMFERENCE_LSB_BYTE,
WHEELCIRCUMFERENCE_MSB_BYTE, WHEELCIRCUMFERENCE_MASK);
}
18 changes: 16 additions & 2 deletions src/Profiles/Lev/DataPages/ANTPLUS_LevCapabilities.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,26 @@

#include <Profiles/Lev/DataPages/ANTPLUS_LevBaseMainDataPage.h>

class LevCapabilities : public LevBaseMainDataPage {
template<class T>
class LevBaseCapabilities : virtual public CoreDataPage<T> {
public:
explicit LevCapabilities(AntRxDataResponse& dp);
LevBaseCapabilities();
uint8_t getNumberOfAssistModesSupported();
uint8_t getNumberOfRegenerativeModesSupported();
uint16_t getWheelCircumference();
};

class LevCapabilities : public LevBaseMainDataPage, public LevBaseCapabilities<BroadcastData> {
public:
explicit LevCapabilities(AntRxDataResponse& dp);
};

class LevCapabilitiesMsg : public LevBaseMainDataPageMsg<BroadcastDataMsg>, public LevBaseCapabilities<BroadcastDataMsg> {
public:
LevCapabilitiesMsg();
void setNumberOfAssistModesSupported(uint8_t modes);
void setNumberOfRegenerativeModesSupported(uint8_t modes);
void setWheelCircumference(uint16_t circumference);
};

#endif // ANTPLUS_LEVCAPABILITIES_h
6 changes: 3 additions & 3 deletions src/Profiles/Lev/DataPages/ANTPLUS_LevDisplayData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,10 @@ uint16_t LevBaseDisplayData<T>::getManufacturerID() {
return this->get16BitValue(MANUFACTURERID_LSB_BYTE, MANUFACTURERID_MSB_BYTE);
}

template class LevBaseDisplayData<BroadcastData>;
template class LevBaseDisplayData<BroadcastDataMsg>;
template class LevBaseDisplayData<AcknowledgedData>;
template class LevBaseDisplayData<AcknowledgedDataMsg>;

LevDisplayDataMsg::LevDisplayDataMsg() : LevBaseMainDataPageMsg(DISPLAYDATA_NUMBER) {
LevDisplayDataMsg::LevDisplayDataMsg() : LevBaseMainDataPageMsg<AcknowledgedDataMsg>(DISPLAYDATA_NUMBER), LevBaseDisplayData() {
set8BitValue(RESERVED1_VALUE, RESERVED1_BYTE);
set8BitValue(RESERVED2_VALUE, RESERVED2_BYTE);
}
Expand Down
2 changes: 1 addition & 1 deletion src/Profiles/Lev/DataPages/ANTPLUS_LevDisplayData.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class LevDisplayData : public LevBaseMainDataPage, public LevBaseDisplayData<Bro
explicit LevDisplayData(AntRxDataResponse& dp);
};

class LevDisplayDataMsg : public LevBaseMainDataPageMsg, public LevBaseDisplayData<BroadcastDataMsg> {
class LevDisplayDataMsg : public LevBaseMainDataPageMsg<AcknowledgedDataMsg>, public LevBaseDisplayData<AcknowledgedDataMsg> {
public:
LevDisplayDataMsg();
void setWheelCircumference(uint16_t circumference);
Expand Down

0 comments on commit e5a2627

Please sign in to comment.