From 591a91be29c27d04e0bd530b9b0bc198d6406321 Mon Sep 17 00:00:00 2001 From: gotocoffee1 Date: Tue, 27 Apr 2021 16:24:00 +0200 Subject: [PATCH] fixed some warnings fixed some small bugs --- 301/CO_Emergency.c | 4 +- 301/CO_NMT_Heartbeat.h | 4 +- 301/CO_SDOclient.c | 22 ++++----- 301/CO_SDOserver.c | 108 +++++++++++++++++++++-------------------- 301/CO_fifo.h | 12 ++--- 305/CO_LSSmaster.c | 4 +- 305/CO_LSSmaster.h | 4 +- 305/CO_LSSslave.c | 4 +- 305/CO_LSSslave.h | 4 +- 309/CO_gateway_ascii.c | 8 +-- 10 files changed, 88 insertions(+), 86 deletions(-) diff --git a/301/CO_Emergency.c b/301/CO_Emergency.c index 4e817f4..dbc2850 100644 --- a/301/CO_Emergency.c +++ b/301/CO_Emergency.c @@ -259,7 +259,7 @@ static ODR_t OD_read_statusBits(OD_stream_t *stream, void *buf, CO_EM_t *em = (CO_EM_t *)stream->object; /* get MAX(errorStatusBitsSize, bufSize, ODsizeIndication) */ - size_t countReadLocal = CO_CONFIG_EM_ERR_STATUS_BITS_COUNT / 8; + OD_size_t countReadLocal = CO_CONFIG_EM_ERR_STATUS_BITS_COUNT / 8; if (countReadLocal > count) { countReadLocal = count; } @@ -288,7 +288,7 @@ static ODR_t OD_write_statusBits(OD_stream_t *stream, const void *buf, CO_EM_t *em = (CO_EM_t *)stream->object; /* get MAX(errorStatusBitsSize, bufSize, ODsizeIndication) */ - size_t countWrite = CO_CONFIG_EM_ERR_STATUS_BITS_COUNT / 8; + OD_size_t countWrite = CO_CONFIG_EM_ERR_STATUS_BITS_COUNT / 8; if (countWrite > count) { countWrite = count; } diff --git a/301/CO_NMT_Heartbeat.h b/301/CO_NMT_Heartbeat.h index b60b98f..0362754 100644 --- a/301/CO_NMT_Heartbeat.h +++ b/301/CO_NMT_Heartbeat.h @@ -315,7 +315,7 @@ CO_NMT_reset_cmd_t CO_NMT_process(CO_NMT_t *NMT, * @return @ref CO_NMT_internalState_t */ static inline CO_NMT_internalState_t CO_NMT_getInternalState(CO_NMT_t *NMT) { - return (NMT == NULL) ? CO_NMT_INITIALIZING : NMT->operatingState; + return (NMT == NULL) ? CO_NMT_INITIALIZING : (CO_NMT_internalState_t)NMT->operatingState; } @@ -330,7 +330,7 @@ static inline CO_NMT_internalState_t CO_NMT_getInternalState(CO_NMT_t *NMT) { static inline void CO_NMT_sendInternalCommand(CO_NMT_t *NMT, CO_NMT_command_t command) { - if (NMT != NULL) NMT->internalCommand = command; + if (NMT != NULL) NMT->internalCommand = (uint8_t)command; } diff --git a/301/CO_SDOclient.c b/301/CO_SDOclient.c index 9f7b158..b547bfe 100644 --- a/301/CO_SDOclient.c +++ b/301/CO_SDOclient.c @@ -411,8 +411,8 @@ CO_SDO_return_t CO_SDOclient_setup(CO_SDOclient_t *SDO_C, if (ret != CO_ERROR_NO || SDO_C->CANtxBuff == NULL) { - return CO_SDO_RT_wrongArguments; SDO_C->valid = false; + return CO_SDO_RT_wrongArguments; } return CO_SDO_RT_ok_communicationEnd; @@ -599,11 +599,11 @@ CO_SDO_return_t CO_SDOclientDownload(CO_SDOclient_t *SDO_C, buf[count++] = 0; SDO_C->sizeTran++; } - SDO_C->OD_IO.stream.dataLength = SDO_C->sizeTran; + SDO_C->OD_IO.stream.dataLength = (OD_size_t)SDO_C->sizeTran; } /* Indicate OD data size, if necessary. Used for EOF check. */ else if (sizeInOd == 0) { - SDO_C->OD_IO.stream.dataLength = SDO_C->sizeTran; + SDO_C->OD_IO.stream.dataLength = (OD_size_t)SDO_C->sizeTran; } /* Verify if size of data downloaded matches data size in OD. */ else if (SDO_C->sizeTran != sizeInOd) { @@ -619,7 +619,7 @@ CO_SDO_return_t CO_SDOclientDownload(CO_SDOclient_t *SDO_C, /* write data to Object Dictionary */ if (lock) { CO_LOCK_OD(SDO_C->CANdevTx); } ODR_t odRet = SDO_C->OD_IO.write(&SDO_C->OD_IO.stream, buf, - count, &countWritten); + (OD_size_t)count, &countWritten); if (lock) { CO_UNLOCK_OD(SDO_C->CANdevTx); } /* verify for errors in write */ @@ -910,7 +910,7 @@ CO_SDO_return_t CO_SDOclientDownload(CO_SDOclient_t *SDO_C, #if (CO_CONFIG_SDO_CLI) & CO_CONFIG_SDO_CLI_SEGMENTED /* segmented transfer, indicate data size */ if (SDO_C->sizeInd > 0) { - uint32_t size = CO_SWAP_32(SDO_C->sizeInd); + uint32_t size = CO_SWAP_32((uint32_t)SDO_C->sizeInd); SDO_C->CANtxBuff->data[0] |= 0x01; memcpy(&SDO_C->CANtxBuff->data[4], &size, sizeof(size)); } @@ -946,7 +946,7 @@ CO_SDO_return_t CO_SDOclientDownload(CO_SDOclient_t *SDO_C, } /* SDO command specifier */ - SDO_C->CANtxBuff->data[0] = SDO_C->toggle | ((7 - count) << 1); + SDO_C->CANtxBuff->data[0] = (uint8_t)(SDO_C->toggle | ((7 - count) << 1)); /* is end of transfer? Verify also sizeTran */ if (CO_fifo_getOccupied(&SDO_C->bufFifo) == 0 && !bufferPartial) { @@ -976,7 +976,7 @@ CO_SDO_return_t CO_SDOclientDownload(CO_SDOclient_t *SDO_C, /* indicate data size */ if (SDO_C->sizeInd > 0) { - uint32_t size = CO_SWAP_32(SDO_C->sizeInd); + uint32_t size = CO_SWAP_32((uint32_t)SDO_C->sizeInd); SDO_C->CANtxBuff->data[0] |= 0x02; memcpy(&SDO_C->CANtxBuff->data[4], &size, sizeof(size)); } @@ -998,7 +998,7 @@ CO_SDO_return_t CO_SDOclientDownload(CO_SDOclient_t *SDO_C, /* get up to 7 data bytes */ count = CO_fifo_altRead(&SDO_C->bufFifo, &SDO_C->CANtxBuff->data[1], 7); - SDO_C->block_noData = 7 - count; + SDO_C->block_noData = (uint8_t)(7 - count); /* verify if sizeTran is too large */ SDO_C->sizeTran += count; @@ -1204,7 +1204,7 @@ CO_SDO_return_t CO_SDOclientUpload(CO_SDOclient_t *SDO_C, * use maximum SDO client buffer size. Prepare temp buffer. */ OD_size_t countData = SDO_C->OD_IO.stream.dataLength; OD_size_t countBuf = (countData > 0 && countData <= countFifo) - ? countData : countFifo; + ? countData : (OD_size_t)countFifo; OD_size_t countRd = 0; uint8_t buf[CO_CONFIG_SDO_CLI_BUFFER_SIZE + 1]; bool_t lock = OD_mappable(&SDO_C->OD_IO.stream); @@ -1225,14 +1225,14 @@ CO_SDO_return_t CO_SDOclientUpload(CO_SDOclient_t *SDO_C, && (SDO_C->OD_IO.stream.attribute & ODA_STR) != 0 ) { buf[countRd] = 0; /* (buf is one byte larger) */ - OD_size_t countStr = strlen((char *)buf); + OD_size_t countStr = (OD_size_t)strlen((char *)buf); if (countStr == 0) countStr = 1; /* no zero length */ if (countStr < countRd) { /* string terminator found, finish read, shorten data */ countRd = countStr; odRet = ODR_OK; SDO_C->OD_IO.stream.dataLength = - SDO_C->sizeTran + countRd; + (OD_size_t)SDO_C->sizeTran + countRd; } } diff --git a/301/CO_SDOserver.c b/301/CO_SDOserver.c index 22e4882..d31bf9f 100644 --- a/301/CO_SDOserver.c +++ b/301/CO_SDOserver.c @@ -339,7 +339,6 @@ CO_ReturnError_t CO_SDOserver_init(CO_SDOserver_t *SDO, /* configure CAN identifiers and SDO server parameters if available */ uint16_t CanId_ClientToServer, CanId_ServerToClient; - uint16_t OD_SDOsrvParIdx = OD_getIndex(OD_1200_SDOsrvPar); if (OD_1200_SDOsrvPar == NULL) { /* configure default SDO channel */ @@ -349,60 +348,63 @@ CO_ReturnError_t CO_SDOserver_init(CO_SDOserver_t *SDO, CanId_ServerToClient = CO_CAN_ID_SDO_SRV + nodeId; SDO->valid = true; } - else if (OD_SDOsrvParIdx == OD_H1200_SDO_SERVER_1_PARAM) { - /* configure default SDO channel and SDO server parameters for it */ - if (nodeId < 1 || nodeId > 127) return CO_ERROR_ILLEGAL_ARGUMENT; + else { + uint16_t OD_SDOsrvParIdx = OD_getIndex(OD_1200_SDOsrvPar); + + if (OD_SDOsrvParIdx == OD_H1200_SDO_SERVER_1_PARAM) { + /* configure default SDO channel and SDO server parameters for it */ + if (nodeId < 1 || nodeId > 127) return CO_ERROR_ILLEGAL_ARGUMENT; - CanId_ClientToServer = CO_CAN_ID_SDO_CLI + nodeId; - CanId_ServerToClient = CO_CAN_ID_SDO_SRV + nodeId; - SDO->valid = true; + CanId_ClientToServer = CO_CAN_ID_SDO_CLI + nodeId; + CanId_ServerToClient = CO_CAN_ID_SDO_SRV + nodeId; + SDO->valid = true; - OD_set_u32(OD_1200_SDOsrvPar, 1, CanId_ClientToServer, true); - OD_set_u32(OD_1200_SDOsrvPar, 2, CanId_ServerToClient, true); - } - else if (OD_SDOsrvParIdx > OD_H1200_SDO_SERVER_1_PARAM - && OD_SDOsrvParIdx <= (OD_H1200_SDO_SERVER_1_PARAM + 0x7F) - ) { - /* configure additional SDO channel and SDO server parameters for it */ - uint8_t maxSubIndex; - uint32_t COB_IDClientToServer32, COB_IDServerToClient32; - - /* get and verify parameters from Object Dictionary (initial values) */ - ODR_t odRet0 = OD_get_u8(OD_1200_SDOsrvPar, 0, &maxSubIndex, true); - ODR_t odRet1 = OD_get_u32(OD_1200_SDOsrvPar, 1, - &COB_IDClientToServer32, true); - ODR_t odRet2 = OD_get_u32(OD_1200_SDOsrvPar, 2, - &COB_IDServerToClient32, true); - - if (odRet0 != ODR_OK || (maxSubIndex != 2 && maxSubIndex != 3) - || odRet1 != ODR_OK || odRet2 != ODR_OK + OD_set_u32(OD_1200_SDOsrvPar, 1, CanId_ClientToServer, true); + OD_set_u32(OD_1200_SDOsrvPar, 2, CanId_ServerToClient, true); + } + else if (OD_SDOsrvParIdx > OD_H1200_SDO_SERVER_1_PARAM + && OD_SDOsrvParIdx <= (OD_H1200_SDO_SERVER_1_PARAM + 0x7F) ) { - if (errInfo != NULL) *errInfo = OD_SDOsrvParIdx; - return CO_ERROR_OD_PARAMETERS; + /* configure additional SDO channel and SDO server parameters for it */ + uint8_t maxSubIndex; + uint32_t COB_IDClientToServer32, COB_IDServerToClient32; + + /* get and verify parameters from Object Dictionary (initial values) */ + ODR_t odRet0 = OD_get_u8(OD_1200_SDOsrvPar, 0, &maxSubIndex, true); + ODR_t odRet1 = OD_get_u32(OD_1200_SDOsrvPar, 1, + &COB_IDClientToServer32, true); + ODR_t odRet2 = OD_get_u32(OD_1200_SDOsrvPar, 2, + &COB_IDServerToClient32, true); + + if (odRet0 != ODR_OK || (maxSubIndex != 2 && maxSubIndex != 3) + || odRet1 != ODR_OK || odRet2 != ODR_OK + ) { + if (errInfo != NULL) *errInfo = OD_SDOsrvParIdx; + return CO_ERROR_OD_PARAMETERS; + } + + + CanId_ClientToServer = ((COB_IDClientToServer32 & 0x80000000) == 0) + ? (uint16_t)(COB_IDClientToServer32 & 0x7FF) : 0; + CanId_ServerToClient = ((COB_IDServerToClient32 & 0x80000000) == 0) + ? (uint16_t)(COB_IDServerToClient32 & 0x7FF) : 0; + + #if (CO_CONFIG_SDO_SRV) & CO_CONFIG_FLAG_OD_DYNAMIC + SDO->OD_1200_extension.object = SDO; + SDO->OD_1200_extension.read = OD_readOriginal; + SDO->OD_1200_extension.write = OD_write_1201_additional; + ODR_t odRetE = OD_extension_init(OD_1200_SDOsrvPar, + &SDO->OD_1200_extension); + if (odRetE != ODR_OK) { + if (errInfo != NULL) *errInfo = OD_SDOsrvParIdx; + return CO_ERROR_OD_PARAMETERS; + } + #endif } - - - CanId_ClientToServer = ((COB_IDClientToServer32 & 0x80000000) == 0) - ? (uint16_t)(COB_IDClientToServer32 & 0x7FF) : 0; - CanId_ServerToClient = ((COB_IDServerToClient32 & 0x80000000) == 0) - ? (uint16_t)(COB_IDServerToClient32 & 0x7FF) : 0; - -#if (CO_CONFIG_SDO_SRV) & CO_CONFIG_FLAG_OD_DYNAMIC - SDO->OD_1200_extension.object = SDO; - SDO->OD_1200_extension.read = OD_readOriginal; - SDO->OD_1200_extension.write = OD_write_1201_additional; - ODR_t odRetE = OD_extension_init(OD_1200_SDOsrvPar, - &SDO->OD_1200_extension); - if (odRetE != ODR_OK) { - if (errInfo != NULL) *errInfo = OD_SDOsrvParIdx; - return CO_ERROR_OD_PARAMETERS; + else { + return CO_ERROR_ILLEGAL_ARGUMENT; } -#endif } - else { - return CO_ERROR_ILLEGAL_ARGUMENT; - } - CO_FLAG_CLEAR(SDO->CANrxNew); /* store the parameters and configure CANrx and CANtx */ @@ -620,7 +622,7 @@ static bool_t readFromOd(CO_SDOserver_t *SDO, /* if data is string, send only data up to null termination */ if (countRd > 0 && (SDO->OD_IO.stream.attribute & ODA_STR) != 0) { bufShifted[countRd] = 0; /* (SDO->buf is one byte larger) */ - OD_size_t countStr = strlen((char *)bufShifted); + OD_size_t countStr = (OD_size_t)strlen((char *)bufShifted); if (countStr == 0) countStr = 1; /* zero length is not allowed */ if (countStr < countRd) { /* string terminator found, read is finished, shorten data */ @@ -1070,7 +1072,7 @@ CO_SDO_return_t CO_SDOserver_process(CO_SDOserver_t *SDO, } /* verify, if there is enough data */ - if (!SDO->finished && SDO->bufOffsetWr < SDO->block_blksize*7) { + if (!SDO->finished && SDO->bufOffsetWr < SDO->block_blksize*7U) { abortCode = CO_SDO_AB_DEVICE_INCOMPAT; SDO->state = CO_SDO_ST_ABORT; } @@ -1260,7 +1262,7 @@ CO_SDO_return_t CO_SDOserver_process(CO_SDOserver_t *SDO, /* data were already loaded from OD variable */ if (SDO->sizeInd > 0 && SDO->sizeInd <= 4) { /* expedited transfer */ - SDO->CANtxBuff->data[0] = 0x43 | ((4 - SDO->sizeInd) << 2); + SDO->CANtxBuff->data[0] = (uint8_t)(0x43 | ((4 - SDO->sizeInd) << 2)); memcpy(&SDO->CANtxBuff->data[4], &SDO->buf, sizeof(SDO->sizeInd)); SDO->state = CO_SDO_ST_IDLE; @@ -1512,7 +1514,7 @@ CO_SDO_return_t CO_SDOserver_process(CO_SDOserver_t *SDO, memcpy(&SDO->CANtxBuff->data[1], SDO->buf + SDO->bufOffsetRd, count); SDO->bufOffsetRd += count; - SDO->block_noData = 7 - count; + SDO->block_noData = (uint8_t)(7 - count); SDO->sizeTran += count; /* verify if sizeTran is too large or too short if last segment */ diff --git a/301/CO_fifo.h b/301/CO_fifo.h index b703414..c241365 100644 --- a/301/CO_fifo.h +++ b/301/CO_fifo.h @@ -136,9 +136,9 @@ static inline bool_t CO_fifo_purge(CO_fifo_t *fifo) { * @return number of available bytes */ static inline size_t CO_fifo_getSpace(CO_fifo_t *fifo) { - int sizeLeft = (int)fifo->readPtr - fifo->writePtr - 1; + int sizeLeft = (int)fifo->readPtr - (int)fifo->writePtr - 1; if (sizeLeft < 0) { - sizeLeft += fifo->bufSize; + sizeLeft += (int)fifo->bufSize; } return (size_t) sizeLeft; @@ -153,9 +153,9 @@ static inline size_t CO_fifo_getSpace(CO_fifo_t *fifo) { * @return number of occupied bytes */ static inline size_t CO_fifo_getOccupied(CO_fifo_t *fifo) { - int sizeOccupied = (int)fifo->writePtr - fifo->readPtr; + int sizeOccupied = (int)fifo->writePtr - (int)fifo->readPtr; if (sizeOccupied < 0) { - sizeOccupied += fifo->bufSize; + sizeOccupied += (int)fifo->bufSize; } return (size_t) sizeOccupied; @@ -295,9 +295,9 @@ void CO_fifo_altFinish(CO_fifo_t *fifo, uint16_t *crc); * @return number of occupied bytes. */ static inline size_t CO_fifo_altGetOccupied(CO_fifo_t *fifo) { - int sizeOccupied = (int)fifo->writePtr - fifo->altReadPtr; + int sizeOccupied = (int)fifo->writePtr - (int)fifo->altReadPtr; if (sizeOccupied < 0) { - sizeOccupied += fifo->bufSize; + sizeOccupied += (int)fifo->bufSize; } return (size_t) sizeOccupied; diff --git a/305/CO_LSSmaster.c b/305/CO_LSSmaster.c index 9a624e6..6072171 100644 --- a/305/CO_LSSmaster.c +++ b/305/CO_LSSmaster.c @@ -129,10 +129,10 @@ CO_ReturnError_t CO_LSSmaster_init( uint16_t timeout_ms, CO_CANmodule_t *CANdevRx, uint16_t CANdevRxIdx, - uint32_t CANidLssSlave, + uint16_t CANidLssSlave, CO_CANmodule_t *CANdevTx, uint16_t CANdevTxIdx, - uint32_t CANidLssMaster) + uint16_t CANidLssMaster) { CO_ReturnError_t ret = CO_ERROR_NO; diff --git a/305/CO_LSSmaster.h b/305/CO_LSSmaster.h index 8be043d..6802809 100644 --- a/305/CO_LSSmaster.h +++ b/305/CO_LSSmaster.h @@ -158,10 +158,10 @@ CO_ReturnError_t CO_LSSmaster_init( uint16_t timeout_ms, CO_CANmodule_t *CANdevRx, uint16_t CANdevRxIdx, - uint32_t CANidLssSlave, + uint16_t CANidLssSlave, CO_CANmodule_t *CANdevTx, uint16_t CANdevTxIdx, - uint32_t CANidLssMaster); + uint16_t CANidLssMaster); /** * Change LSS master timeout diff --git a/305/CO_LSSslave.c b/305/CO_LSSslave.c index 72c7c2e..ee2e501 100644 --- a/305/CO_LSSslave.c +++ b/305/CO_LSSslave.c @@ -199,10 +199,10 @@ CO_ReturnError_t CO_LSSslave_init( uint8_t *pendingNodeID, CO_CANmodule_t *CANdevRx, uint16_t CANdevRxIdx, - uint32_t CANidLssMaster, + uint16_t CANidLssMaster, CO_CANmodule_t *CANdevTx, uint16_t CANdevTxIdx, - uint32_t CANidLssSlave) + uint16_t CANidLssSlave) { CO_ReturnError_t ret = CO_ERROR_NO; diff --git a/305/CO_LSSslave.h b/305/CO_LSSslave.h index 2b500b2..5593e7d 100644 --- a/305/CO_LSSslave.h +++ b/305/CO_LSSslave.h @@ -164,10 +164,10 @@ CO_ReturnError_t CO_LSSslave_init( uint8_t *pendingNodeID, CO_CANmodule_t *CANdevRx, uint16_t CANdevRxIdx, - uint32_t CANidLssMaster, + uint16_t CANidLssMaster, CO_CANmodule_t *CANdevTx, uint16_t CANdevTxIdx, - uint32_t CANidLssSlave); + uint16_t CANidLssSlave); /** * Process LSS communication diff --git a/309/CO_gateway_ascii.c b/309/CO_gateway_ascii.c index cb5642c..4922f35 100644 --- a/309/CO_gateway_ascii.c +++ b/309/CO_gateway_ascii.c @@ -485,7 +485,7 @@ static void responseWithError(CO_GTWA_t *gtwa, for (i = 0; i < len; i++) { const errorDescs_t *ed = &errorDescs[i]; - if(ed->code == respErrorCode) { + if((CO_GTWA_respErrorCode_t)ed->code == respErrorCode) { desc = ed->desc; } } @@ -507,7 +507,7 @@ static void responseWithErrorSDO(CO_GTWA_t *gtwa, for (i = 0; i < len; i++) { const errorDescs_t *ed = &errorDescsSDO[i]; - if(ed->code == abortCode) { + if((CO_SDO_abortCode_t)ed->code == abortCode) { desc = ed->desc; } } @@ -605,7 +605,7 @@ static inline void convertToLower(char *token, size_t maxCount) { if (*c == 0) { break; } else { - *c = tolower((int)*c); + *c = (char)tolower((int)*c); } c++; } @@ -1404,7 +1404,7 @@ void CO_GTWA_process(CO_GTWA_t *gtwa, if (closed == 0) { /* more arguments follow */ CO_fifo_readToken(>wa->commFifo,tok,sizeof(tok),&closed,&err); - gtwa->lssNID = getU32(tok, 1, 127, &err); + gtwa->lssNID = (uint8_t)getU32(tok, 1, 127, &err); if (err) break; closed = -1;