Fix CAM permissions
This commit is contained in:
parent
477206d065
commit
c65f7ca77c
11
src/cam.c
11
src/cam.c
|
|
@ -35,7 +35,7 @@ const cid_ssp_bm_t CID_SSP_BM_MAP[] = {
|
|||
{"dangerousGoods/dangerousGoodsContainer", CID_DANGEROUS_GOODS, 0x1000},
|
||||
{"roadwork/roadWorksContainerBasic", CID_ROADWORK, 0x0800},
|
||||
{"rescue/rescueContainer", CID_RESCUE, 0x0400},
|
||||
{"emergency/emergencyContaine", CID_EMERGENCY, 0x0200},
|
||||
{"emergency/emergencyContainer", CID_EMERGENCY, 0x0200},
|
||||
{"safetyCar/safetyCarContainer", CID_SAFETY_CAR, 0x0100},
|
||||
{"closedLanes/RoadworksContainerBasic", CID_CLOSED_LANES, 0x0080},
|
||||
{"requestForRightOfWay/EmergencyContainer: EmergencyPriority", CID_REQUEST_FOR_RIGHT_OF_WAY, 0x0040},
|
||||
|
|
@ -62,12 +62,14 @@ static int permissions_check(int cid, uint8_t* permissions, uint8_t permissions_
|
|||
return 0;
|
||||
}
|
||||
|
||||
uint32_t perms_int = (*((uint32_t*) permissions)) >> 16;
|
||||
uint16_t perms_int = *(uint16_t*)(permissions+1);
|
||||
|
||||
uint32_t perm_val;
|
||||
uint16_t perm_val;
|
||||
for (int i = 0; i < 16; ++i) {
|
||||
if (cid == CID_SSP_BM_MAP[i].cid) {
|
||||
perm_val = CID_SSP_BM_MAP[i].bitmap_val;
|
||||
perm_val = (perm_val>>8) | (perm_val<<8);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -396,7 +398,8 @@ int check_cam(void* fc, BTPDataIndication_t *bdi, CAM_t* cam, uint8_t* ssp, uint
|
|||
|
||||
// Check permissions
|
||||
if (ssp) {
|
||||
if (cam->cam.camParameters.highFrequencyContainer.choice.rsuContainerHighFrequency.protectedCommunicationZonesRSU) {
|
||||
if (cam->cam.camParameters.highFrequencyContainer.present == HighFrequencyContainer_PR_rsuContainerHighFrequency &&
|
||||
cam->cam.camParameters.highFrequencyContainer.choice.rsuContainerHighFrequency.protectedCommunicationZonesRSU) {
|
||||
if (!permissions_check(CID_PROTECTED_ZONES, ssp, ssp_len)) {rv = 1; return rv;}
|
||||
}
|
||||
if (cam->cam.camParameters.specialVehicleContainer) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue