@edub nice work on the decode of the RC config. For my recent big dump of VAG CAN signals I followed the same road as I've had to test over 100 different signals and I wanted to bulk-produce the RC config on my desktop with an actual keyboard and mouse.
Like you, I found the vehicleProfile.json file after renaming the .rcz extension to .zip.
You've resolved one unknown for me, which was whether the "deviceType" field was install-specific or generic. On my end it is "12" as well so I think this is not platform tied. Perhaps @aol will let us know if we won the prize. Here's a snippet from my file:
"customChannels": [
{
"pid": 1228,
"equation": "bitsToUint(raw,48,8)-50",
"obdHeader": 0,
"channelId": 7439349,
"deviceType": 12
},
I concur on the lower 13 bits, not sure how you concluded that channelID is 15 bits wide unless you're going by where the "position" values start. Don't think we know for sure what b13-b14 are for - you're probably right but not enough evidence yet. That said, I can confirm the 3 channel IDs you mapped and add two more:
0x03F5 = Tire temp
0x03F6 = Tire pressure
0x03F7 = Wheel speed
0x1389 = Digital
0x1399 = Torque
For those not good w/hex or base2 trying to grok the "position" field in the next slot over, here is an example for four wheel speeds:
Wheelspeed RR = 0183F7
Wheelspeed RL = 0203F7
Wheelspeed FR = 0283F7
Wheelspeed FL = 0303F7
Hopefully that's clear. Now moving on to Digital. Since vehicleConfig.json uses decimal not hex for all values I autogen'ed a table of values for field #s from 00 to 63. This is with "position" = 0 so not assigning to any location on the car. Here are some excerpted rows that should make the flow clear:
Item# (Dec) Item# (Hex) ChannelID (Hex) ChannelID (Dec)
1 01 0101389 1053577
2 02 0201389 2102153
3 03 0301389 3150729
...
30 1E 1E01389 31462281
31 1F 1F01389 32510857
32 20 2001389 33559433
33 21 2101389 34608009
...
61 3D 3D01389 63968137
62 3E 3E01389 65016713
63 3F 3F01389 66065289
This made it really easy to load up 64 different candidate signals at a time and go driving, then swap them out for a new batch. Like you, I had no problem re-zipping up the json (remember to change the extension back to .rcz) and importing into RC.
To avoid stepping on my "production" config I changed the car Year to something outrageous just to keep it separate. In my case my test config is 718 Cayman GTS model year 3000. Like this:
"info": [
{
"value": "Porsche",
"infoId": 1
},
{
"value": "718 Cayman GTS",
"infoId": 2
},
{
"value": "3000",
"infoId": 5
},
Once I lock in on my final config once I wrap up my CAN hunting then I'll switch the model year and overwrite my main config. (After doing a complete RC backup to my fileserver first).