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},
|
{"dangerousGoods/dangerousGoodsContainer", CID_DANGEROUS_GOODS, 0x1000},
|
||||||
{"roadwork/roadWorksContainerBasic", CID_ROADWORK, 0x0800},
|
{"roadwork/roadWorksContainerBasic", CID_ROADWORK, 0x0800},
|
||||||
{"rescue/rescueContainer", CID_RESCUE, 0x0400},
|
{"rescue/rescueContainer", CID_RESCUE, 0x0400},
|
||||||
{"emergency/emergencyContaine", CID_EMERGENCY, 0x0200},
|
{"emergency/emergencyContainer", CID_EMERGENCY, 0x0200},
|
||||||
{"safetyCar/safetyCarContainer", CID_SAFETY_CAR, 0x0100},
|
{"safetyCar/safetyCarContainer", CID_SAFETY_CAR, 0x0100},
|
||||||
{"closedLanes/RoadworksContainerBasic", CID_CLOSED_LANES, 0x0080},
|
{"closedLanes/RoadworksContainerBasic", CID_CLOSED_LANES, 0x0080},
|
||||||
{"requestForRightOfWay/EmergencyContainer: EmergencyPriority", CID_REQUEST_FOR_RIGHT_OF_WAY, 0x0040},
|
{"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;
|
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) {
|
for (int i = 0; i < 16; ++i) {
|
||||||
if (cid == CID_SSP_BM_MAP[i].cid) {
|
if (cid == CID_SSP_BM_MAP[i].cid) {
|
||||||
perm_val = CID_SSP_BM_MAP[i].bitmap_val;
|
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
|
// Check permissions
|
||||||
if (ssp) {
|
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 (!permissions_check(CID_PROTECTED_ZONES, ssp, ssp_len)) {rv = 1; return rv;}
|
||||||
}
|
}
|
||||||
if (cam->cam.camParameters.specialVehicleContainer) {
|
if (cam->cam.camParameters.specialVehicleContainer) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue