new device comIF return value in DHB

request receive message
This commit is contained in:
Robin Müller 2020-03-26 19:53:05 +01:00
parent 093fef5d6f
commit 5d071a1cf1
4 changed files with 33 additions and 27 deletions

View File

@ -38,11 +38,16 @@ class DeviceCommunicationIF: public HasReturnvaluesIF {
public:
static const uint8_t INTERFACE_ID = CLASS_ID::DEVICE_COMMUNICATION_IF;
static const ReturnValue_t INVALID_COOKIE_TYPE = MAKE_RETURN_CODE(0x01);
static const ReturnValue_t NOT_ACTIVE = MAKE_RETURN_CODE(0x02);
static const ReturnValue_t TOO_MUCH_DATA = MAKE_RETURN_CODE(0x03);
static const ReturnValue_t NULLPOINTER = MAKE_RETURN_CODE(0x04);
static const ReturnValue_t PROTOCOL_ERROR = MAKE_RETURN_CODE(0x05);
//!< This is used if no read request is to be made by the device handler.
static const ReturnValue_t NO_READ_REQUEST = MAKE_RETURN_CODE(0x01);
//! General protocol error. Define more concrete errors in child handler
static const ReturnValue_t PROTOCOL_ERROR = MAKE_RETURN_CODE(0x02);
//! If cookie is a null pointer
static const ReturnValue_t NULLPOINTER = MAKE_RETURN_CODE(0x03);
static const ReturnValue_t INVALID_COOKIE_TYPE = MAKE_RETURN_CODE(0x04);
// is this needed if there is no open/close call?
static const ReturnValue_t NOT_ACTIVE = MAKE_RETURN_CODE(0x05);
static const ReturnValue_t TOO_MUCH_DATA = MAKE_RETURN_CODE(0x06);
virtual ~DeviceCommunicationIF() {}
@ -54,7 +59,8 @@ public:
* this can be performed in this function, which is called on device handler
* initialization.
* @param cookie
* @return
* @return -@c RETURN_OK if initialization was successfull
* - Everything else triggers failure event with returnvalue as parameter 1
*/
virtual ReturnValue_t initializeInterface(CookieIF * cookie) = 0;
@ -66,8 +72,7 @@ public:
* @param data
* @param len
* @return -@c RETURN_OK for successfull send
* - Everything else triggers sending failed event with
* returnvalue as parameter 1
* - Everything else triggers failure event with returnvalue as parameter 1
*/
virtual ReturnValue_t sendMessage(CookieIF *cookie, const uint8_t * sendData,
size_t sendLen) = 0;
@ -77,8 +82,7 @@ public:
* Get send confirmation that the data in sendMessage() was sent successfully.
* @param cookie
* @return -@c RETURN_OK if data was sent successfull
* - Everything else triggers sending failed event with
* returnvalue as parameter 1
* - Everything else triggers falure event with returnvalue as parameter 1
*/
virtual ReturnValue_t getSendSuccess(CookieIF *cookie) = 0;
@ -86,7 +90,10 @@ public:
* Called by DHB in the SEND_WRITE doSendRead().
* Request a reply.
* @param cookie
* @return
* @return -@c RETURN_OK to confirm the request for data has been sent.
* -@c NO_READ_REQUEST if no request shall be made. readReceivedMessage()
* will not be called in the respective communication cycle.
* - Everything else triggers failure event with returnvalue as parameter 1
*/
virtual ReturnValue_t requestReceiveMessage(CookieIF *cookie, size_t requestLen) = 0;
@ -98,8 +105,7 @@ public:
* @param data
* @param len
* @return @c RETURN_OK for successfull receive
* - Everything else triggers receiving failed with
* returnvalue as parameter 1
* - Everything else triggers failure event with returnvalue as parameter 1
*/
virtual ReturnValue_t readReceivedMessage(CookieIF *cookie, uint8_t **buffer,
size_t *size) = 0;

View File

@ -554,7 +554,7 @@ void DeviceHandlerBase::doSendRead() {
if (result == RETURN_OK) {
cookieInfo.state = COOKIE_READ_SENT;
}
else if(result == NO_READ_REQUEST) {
else if(result == DeviceCommunicationIF::NO_READ_REQUEST) {
return;
}
else {
@ -777,8 +777,8 @@ void DeviceHandlerBase::buildRawDeviceCommand(CommandMessage* commandMessage) {
replyReturnvalueToCommand(result, RAW_COMMAND_ID);
storedRawData.raw = StorageManagerIF::INVALID_ADDRESS;
} else {
cookieInfo.pendingCommand = deviceCommandMap.find(
(DeviceCommandId_t) RAW_COMMAND_ID);
cookieInfo.pendingCommand = deviceCommandMap.
find((DeviceCommandId_t) RAW_COMMAND_ID);
cookieInfo.pendingCommand->second.isExecuting = true;
cookieInfo.state = COOKIE_WRITE_READY;
}

View File

@ -90,8 +90,6 @@ public:
// Standard codes used in buildCommandFromCommand
static const ReturnValue_t INVALID_COMMAND_PARAMETER = MAKE_RETURN_CODE(0xD0);
static const ReturnValue_t INVALID_NUMBER_OR_LENGTH_OF_PARAMETERS = MAKE_RETURN_CODE(0xD1);
// Standard codes used in buildNomalDeviceCommand
static const ReturnValue_t NO_READ_REQUEST = MAKE_RETURN_CODE(0xD2);
// Standard codes used in getSwitches
static const ReturnValue_t NO_SWITCH = MAKE_RETURN_CODE(0xE1); //!< Return in getSwitches() to specify there are no switches

View File

@ -11,8 +11,8 @@
#include "task.h"
BinarySemaphore::BinarySemaphore() {
xSemaphoreCreateBinary(handle); // @suppress("Function cannot be resolved")
if(handle == NULL) {
xSemaphoreCreateBinary(handle);
if(handle == nullptr) {
error << "Binary semaphore creation failure" << std::endl;
}
}
@ -22,7 +22,7 @@ BinarySemaphore::~BinarySemaphore() {
}
ReturnValue_t BinarySemaphore::takeBinarySemaphore(uint32_t timeoutMs) {
if(handle == NULL) {
if(handle == nullptr) {
return HasReturnvaluesIF::RETURN_FAILED;
}
TickType_t timeout = portMAX_DELAY;
@ -39,7 +39,7 @@ ReturnValue_t BinarySemaphore::takeBinarySemaphore(uint32_t timeoutMs) {
}
ReturnValue_t BinarySemaphore::takeBinarySemaphoreTickTimeout(TickType_t timeoutTicks) {
if(handle == NULL) {
if(handle == nullptr) {
return SEMAPHORE_NOT_FOUND;
}
@ -52,7 +52,7 @@ ReturnValue_t BinarySemaphore::takeBinarySemaphoreTickTimeout(TickType_t timeout
}
ReturnValue_t BinarySemaphore::giveBinarySemaphore() {
if (handle == NULL) {
if (handle == nullptr) {
return HasReturnvaluesIF::RETURN_FAILED;
}
BaseType_t returncode = xSemaphoreGive(handle);
@ -68,7 +68,7 @@ SemaphoreHandle_t BinarySemaphore::getSemaphore() {
}
ReturnValue_t BinarySemaphore::giveBinarySemaphore(SemaphoreHandle_t semaphore) {
if (semaphore == NULL) {
if (semaphore == nullptr) {
return HasReturnvaluesIF::RETURN_FAILED;
}
BaseType_t returncode = xSemaphoreGive(semaphore);
@ -80,13 +80,15 @@ ReturnValue_t BinarySemaphore::giveBinarySemaphore(SemaphoreHandle_t semaphore)
}
void BinarySemaphore::resetSemaphore() {
vSemaphoreDelete(handle);
xSemaphoreCreateBinary(handle);
if(handle != nullptr) {
vSemaphoreDelete(handle);
xSemaphoreCreateBinary(handle);
}
}
ReturnValue_t BinarySemaphore::giveBinarySemaphoreFromISR(SemaphoreHandle_t semaphore,
BaseType_t * higherPriorityTaskWoken) {
if (semaphore == NULL) {
if (semaphore == nullptr) {
return HasReturnvaluesIF::RETURN_FAILED;
}
BaseType_t returncode = xSemaphoreGiveFromISR(semaphore, higherPriorityTaskWoken);