Lines Matching refs:TPDO

144 static void CO_TPDOconfigCom(CO_TPDO_t* TPDO, uint32_t COB_IDUsedByTPDO, uint8_t syncFlag){  in CO_TPDOconfigCom()  argument
150 if((COB_IDUsedByTPDO & 0xBFFFF800L) == 0 && TPDO->dataLength && ID){ in CO_TPDOconfigCom()
152 if(ID == TPDO->defaultCOB_ID) ID += TPDO->nodeId; in CO_TPDOconfigCom()
153 TPDO->valid = true; in CO_TPDOconfigCom()
157 TPDO->valid = false; in CO_TPDOconfigCom()
160 TPDO->CANtxBuff = CO_CANtxBufferInit( in CO_TPDOconfigCom()
161 TPDO->CANdevTx, /* CAN device */ in CO_TPDOconfigCom()
162 TPDO->CANdevTxIdx, /* index of specific buffer inside CAN module */ in CO_TPDOconfigCom()
165 TPDO->dataLength, /* number of data bytes */ in CO_TPDOconfigCom()
168 if(TPDO->CANtxBuff == 0){ in CO_TPDOconfigCom()
169 TPDO->valid = false; in CO_TPDOconfigCom()
358 static uint32_t CO_TPDOconfigMap(CO_TPDO_t* TPDO, uint8_t noOfMappedObjects){ in CO_TPDOconfigMap() argument
362 const uint32_t* pMap = &TPDO->TPDOMapPar->mappedObject1; in CO_TPDOconfigMap()
364 TPDO->sendIfCOSFlags = 0; in CO_TPDOconfigMap()
375 TPDO->SDO, in CO_TPDOconfigMap()
380 &TPDO->sendIfCOSFlags, in CO_TPDOconfigMap()
384 CO_errorReport(TPDO->em, CO_EM_PDO_WRONG_MAPPING, CO_EMC_PROTOCOL_ERROR, map); in CO_TPDOconfigMap()
392 TPDO->mapPointer[j] = pData++; in CO_TPDOconfigMap()
396 TPDO->mapPointer[j] = pData++; in CO_TPDOconfigMap()
400 TPDO->mapPointer[j] = pData++; in CO_TPDOconfigMap()
406 TPDO->dataLength = length; in CO_TPDOconfigMap()
492 CO_TPDO_t *TPDO; in CO_ODF_TPDOcom() local
494 TPDO = (CO_TPDO_t*) ODF_arg->object; in CO_ODF_TPDOcom()
504 if(((value)&0xFFFF) == TPDO->defaultCOB_ID && TPDO->defaultCOB_ID) in CO_ODF_TPDOcom()
505 value += TPDO->nodeId; in CO_ODF_TPDOcom()
508 if(!TPDO->valid) value |= 0x80000000L; in CO_ODF_TPDOcom()
516 if(TPDO->restrictionFlags & 0x04) in CO_ODF_TPDOcom()
518 if(*TPDO->operatingState == CO_NMT_OPERATIONAL && (TPDO->restrictionFlags & 0x01)) in CO_ODF_TPDOcom()
529 if(((value)&0xFFFF) == (TPDO->defaultCOB_ID + TPDO->nodeId)){ in CO_ODF_TPDOcom()
531 value += TPDO->defaultCOB_ID; in CO_ODF_TPDOcom()
537 if(TPDO->valid && ((value ^ TPDO->TPDOCommPar->COB_IDUsedByTPDO) & 0x3FFFFFFFL)) in CO_ODF_TPDOcom()
541 CO_TPDOconfigCom(TPDO, value, TPDO->CANtxBuff->syncFlag); in CO_ODF_TPDOcom()
542 TPDO->syncCounter = 255; in CO_ODF_TPDOcom()
550 TPDO->CANtxBuff->syncFlag = (*value <= 240) ? 1 : 0; in CO_ODF_TPDOcom()
551 TPDO->syncCounter = 255; in CO_ODF_TPDOcom()
555 if(TPDO->valid) in CO_ODF_TPDOcom()
558 TPDO->inhibitTimer = 0; in CO_ODF_TPDOcom()
563 TPDO->eventTimer = ((uint32_t) value) * 1000; in CO_ODF_TPDOcom()
569 if(TPDO->valid) in CO_ODF_TPDOcom()
653 CO_TPDO_t *TPDO; in CO_ODF_TPDOmap() local
655 TPDO = (CO_TPDO_t*) ODF_arg->object; in CO_ODF_TPDOmap()
663 if(!TPDO->dataLength) *value = 0; in CO_ODF_TPDOmap()
669 if(TPDO->restrictionFlags & 0x08) in CO_ODF_TPDOmap()
671 if(*TPDO->operatingState == CO_NMT_OPERATIONAL && (TPDO->restrictionFlags & 0x02)) in CO_ODF_TPDOmap()
673 if(TPDO->valid) in CO_ODF_TPDOmap()
684 return CO_TPDOconfigMap(TPDO, *value); in CO_ODF_TPDOmap()
695 if(TPDO->dataLength) in CO_ODF_TPDOmap()
700 TPDO->SDO, in CO_ODF_TPDOmap()
766 CO_TPDO_t *TPDO, in CO_TPDO_init() argument
782 if(TPDO==NULL || em==NULL || SDO==NULL || operatingState==NULL || in CO_TPDO_init()
788 TPDO->em = em; in CO_TPDO_init()
789 TPDO->SDO = SDO; in CO_TPDO_init()
790 TPDO->SYNC = SYNC; in CO_TPDO_init()
791 TPDO->TPDOCommPar = TPDOCommPar; in CO_TPDO_init()
792 TPDO->TPDOMapPar = TPDOMapPar; in CO_TPDO_init()
793 TPDO->operatingState = operatingState; in CO_TPDO_init()
794 TPDO->nodeId = nodeId; in CO_TPDO_init()
795 TPDO->defaultCOB_ID = defaultCOB_ID; in CO_TPDO_init()
796 TPDO->restrictionFlags = restrictionFlags; in CO_TPDO_init()
799 CO_OD_configure(SDO, idx_TPDOCommPar, CO_ODF_TPDOcom, (void*)TPDO, 0, 0); in CO_TPDO_init()
800 CO_OD_configure(SDO, idx_TPDOMapPar, CO_ODF_TPDOmap, (void*)TPDO, 0, 0); in CO_TPDO_init()
803 TPDO->CANdevTx = CANdevTx; in CO_TPDO_init()
804 TPDO->CANdevTxIdx = CANdevTxIdx; in CO_TPDO_init()
805 TPDO->syncCounter = 255; in CO_TPDO_init()
806 TPDO->inhibitTimer = 0; in CO_TPDO_init()
807 TPDO->eventTimer = ((uint32_t) TPDOCommPar->eventTimer) * 1000; in CO_TPDO_init()
808 if(TPDOCommPar->transmissionType>=254) TPDO->sendRequest = 1; in CO_TPDO_init()
810 CO_TPDOconfigMap(TPDO, TPDOMapPar->numberOfMappedObjects); in CO_TPDO_init()
811 …CO_TPDOconfigCom(TPDO, TPDOCommPar->COB_IDUsedByTPDO, ((TPDOCommPar->transmissionType<=240) ? 1 : … in CO_TPDO_init()
816 TPDO->valid = false; in CO_TPDO_init()
824 uint8_t CO_TPDOisCOS(CO_TPDO_t *TPDO){ in CO_TPDOisCOS() argument
830 pPDOdataByte = &TPDO->CANtxBuff->data[TPDO->dataLength]; in CO_TPDOisCOS()
831 ppODdataByte = &TPDO->mapPointer[TPDO->dataLength]; in CO_TPDOisCOS()
833 switch(TPDO->dataLength){ in CO_TPDOisCOS()
834 …case 8: if(*(--pPDOdataByte) != **(--ppODdataByte) && (TPDO->sendIfCOSFlags&0x80)) return 1; // fa… in CO_TPDOisCOS()
835 …case 7: if(*(--pPDOdataByte) != **(--ppODdataByte) && (TPDO->sendIfCOSFlags&0x40)) return 1; // fa… in CO_TPDOisCOS()
836 …case 6: if(*(--pPDOdataByte) != **(--ppODdataByte) && (TPDO->sendIfCOSFlags&0x20)) return 1; // fa… in CO_TPDOisCOS()
837 …case 5: if(*(--pPDOdataByte) != **(--ppODdataByte) && (TPDO->sendIfCOSFlags&0x10)) return 1; // fa… in CO_TPDOisCOS()
838 …case 4: if(*(--pPDOdataByte) != **(--ppODdataByte) && (TPDO->sendIfCOSFlags&0x08)) return 1; // fa… in CO_TPDOisCOS()
839 …case 3: if(*(--pPDOdataByte) != **(--ppODdataByte) && (TPDO->sendIfCOSFlags&0x04)) return 1; // fa… in CO_TPDOisCOS()
840 …case 2: if(*(--pPDOdataByte) != **(--ppODdataByte) && (TPDO->sendIfCOSFlags&0x02)) return 1; // fa… in CO_TPDOisCOS()
841 …case 1: if(*(--pPDOdataByte) != **(--ppODdataByte) && (TPDO->sendIfCOSFlags&0x01)) return 1; // fa… in CO_TPDOisCOS()
849 int16_t CO_TPDOsend(CO_TPDO_t *TPDO){ in CO_TPDOsend() argument
855 if(TPDO->SDO->ODExtensions){ in CO_TPDOsend()
857 const uint32_t* pMap = &TPDO->TPDOMapPar->mappedObject1; in CO_TPDOsend()
858 CO_SDO_t *pSDO = TPDO->SDO; in CO_TPDOsend()
860 for(i=TPDO->TPDOMapPar->numberOfMappedObjects; i>0; i--){ in CO_TPDOsend()
882 i = TPDO->dataLength; in CO_TPDOsend()
883 pPDOdataByte = &TPDO->CANtxBuff->data[0]; in CO_TPDOsend()
884 ppODdataByte = &TPDO->mapPointer[0]; in CO_TPDOsend()
891 TPDO->sendRequest = 0; in CO_TPDOsend()
893 return CO_CANsend(TPDO->CANdevTx, TPDO->CANtxBuff); in CO_TPDOsend()
972 CO_TPDO_t *TPDO, in CO_TPDO_process() argument
976 if(TPDO->valid && *TPDO->operatingState == CO_NMT_OPERATIONAL){ in CO_TPDO_process()
979 if(TPDO->TPDOCommPar->transmissionType >= 253){ in CO_TPDO_process()
980 …if(TPDO->inhibitTimer == 0 && (TPDO->sendRequest || (TPDO->TPDOCommPar->eventTimer && TPDO->eventT… in CO_TPDO_process()
981 if(CO_TPDOsend(TPDO) == CO_ERROR_NO){ in CO_TPDO_process()
983 TPDO->inhibitTimer = ((uint32_t) TPDO->TPDOCommPar->inhibitTime) * 100; in CO_TPDO_process()
984 TPDO->eventTimer = ((uint32_t) TPDO->TPDOCommPar->eventTimer) * 1000; in CO_TPDO_process()
990 else if(TPDO->SYNC && syncWas){ in CO_TPDO_process()
992 if(TPDO->TPDOCommPar->transmissionType == 0){ in CO_TPDO_process()
993 if(TPDO->sendRequest) CO_TPDOsend(TPDO); in CO_TPDO_process()
998 if(TPDO->syncCounter == 255){ in CO_TPDO_process()
999 if(TPDO->SYNC->counterOverflowValue && TPDO->TPDOCommPar->SYNCStartValue) in CO_TPDO_process()
1000 TPDO->syncCounter = 254; /* SYNCStartValue is in use */ in CO_TPDO_process()
1002 TPDO->syncCounter = TPDO->TPDOCommPar->transmissionType; in CO_TPDO_process()
1005 if(TPDO->syncCounter == 254){ in CO_TPDO_process()
1006 if(TPDO->SYNC->counter == TPDO->TPDOCommPar->SYNCStartValue){ in CO_TPDO_process()
1007 TPDO->syncCounter = TPDO->TPDOCommPar->transmissionType; in CO_TPDO_process()
1008 CO_TPDOsend(TPDO); in CO_TPDO_process()
1012 else if(--TPDO->syncCounter == 0){ in CO_TPDO_process()
1013 TPDO->syncCounter = TPDO->TPDOCommPar->transmissionType; in CO_TPDO_process()
1014 CO_TPDOsend(TPDO); in CO_TPDO_process()
1022 if(TPDO->TPDOCommPar->transmissionType>=254) TPDO->sendRequest = 1; in CO_TPDO_process()
1023 else TPDO->sendRequest = 0; in CO_TPDO_process()
1027TPDO->inhibitTimer = (TPDO->inhibitTimer > timeDifference_us) ? (TPDO->inhibitTimer - timeDifferen… in CO_TPDO_process()
1028TPDO->eventTimer = (TPDO->eventTimer > timeDifference_us) ? (TPDO->eventTimer - timeDifference_us)… in CO_TPDO_process()