CCC (Common Command Codes)
The CCC (Common Command Codes) provides a set of universal commands supported across multiple devices. The Bridge for Supernova has a few CCCs which can be used to interact with the downstream devices. This section details these CCCs. For more information on this topic see section.
GETPID
Command Request:
Copy {
"transaction_id": 9,
"command": "i3c_ccc_send",
"params": {
"cccName": "GETPID",
"address": "08",
"pushPullClockFrequencyInMHz": "5",
"openDrainClockFrequencyInKHz": "2500",
"cccParams": {}
}
}
Responses:
Copy {
"transaction_id": "9",
"status": "success",
"type": "command_response",
"is_promise": true,
"data": {
"command": "i3c_ccc_getpid"
}
}
Copy {
"transaction_id": "9",
"status": "success",
"type": "command_response",
"is_promise": false,
"data": {
"is_response_to": "i3c_ccc_getpid",
"status": "success",
"result": {
"payload": ["0", "0", "0", "0", "64", "65"],
"payload_size": 6
}
}
}
DIRECTSETMRL
Command Request:
Copy {
"transaction_id": 10,
"command": "i3c_ccc_send",
"params": {
"cccName": "DIRECTSETMRL",
"address": "08",
"pushPullClockFrequencyInMHz": "5",
"openDrainClockFrequencyInKHz": "2500",
"cccParams": {
"cccDataBuffer": "10"
}
}
}
Responses:
Copy {
"transaction_id": "10",
"status": "success",
"type": "command_response",
"is_promise": true,
"data": {
"command": "i3c_ccc_direct_setmrl"
}
}
Copy {
"transaction_id": "10",
"status": "success",
"type": "command_response",
"is_promise": false,
"data": {
"is_response_to": "i3c_ccc_direct_setmrl",
"status": "success",
"result": {
"payload": ["00", "00"],
"payload_size": 2
}
}
}
DIRECTENEC
Command Request:
Copy {
"transaction_id": 11,
"command": "i3c_ccc_send",
"params": {
"cccName": "DIRECTENEC",
"address": "08",
"pushPullClockFrequencyInMHz": "5",
"openDrainClockFrequencyInKHz": "2500",
"cccParams": {
"events": ["ENINT", "ENCR", "ENHJ"]
}
}
}
Responses:
Copy {
"transaction_id": "10",
"status": "success",
"type": "command_response",
"is_promise": true,
"data": {
"command": "i3c_ccc_direct_enec"
}
}
Copy {
"transaction_id": "10",
"status": "success",
"type": "command_response",
"is_promise": false,
"data": {
"is_response_to": "i3c_ccc_direct_enec",
"status": "success"
}
}
Note: For DIRECTDISEC
the response's format is very similar, except that the accepted events are ["DISINT", "DISCR", "DISHJ"]. For BROADCASTENEC
and BROADCASTDISEC
is also similar but address parameter is not required.
SETAASA
Command Request:
Copy {
"transaction_id": 12,
"command": "i3c_ccc_send",
"params": {
"cccName": "SETAASA",
"pushPullClockFrequencyInMHz": "5",
"openDrainClockFrequencyInKHz": "2500",
"cccParams": {
"staticAddresses": ["08", "09", "0A"]
}
}
}
Responses:
Copy {
"transaction_id": "12",
"status": "success",
"type": "command_response",
"is_promise": true,
"data": {
"command": "i3c_ccc_setaasa"
}
}
Copy {
"transaction_id": "12",
"status": "success",
"type": "command_response",
"is_promise": false,
"data": {
"is_response_to": "i3c_ccc_setaasa",
"status": "success"
}
}
ENTDAA
Command Request:
Copy {
"transaction_id": 13,
"command": "i3c_ccc_send",
"params": {
"cccName": "ENTDAA",
"pushPullClockFrequencyInMHz": "5",
"openDrainClockFrequencyInKHz": "2500",
"cccParams": {
"targetDeviceTable": {
"BMM350": {
"staticAddress": "0x14",
"dynamicAddress": "0x0C",
"i3cFeatures": "0x0B",
"maxIbiPayloadLength": "0xE9",
"bcr": "0x26",
"dcr": "0x43",
"pid": ["0x07", "0x70", "0x10", "0x33", "0x00", "0x00"]
}
}
}
}
}
Responses:
Copy {
"transaction_id": "13",
"status": "success",
"type": "command_response",
"is_promise": true,
"data": {
"command": "i3c_ccc_entdaa"
}
}
Copy {
"transaction_id": "13",
"status": "success",
"type": "command_response",
"is_promise": false,
"data": {
"is_response_to": "i3c_ccc_entdaa",
"status": "success"
}
}
Note: When using this command is necessary to previously run i3c_init_bus
followed byi3c_reset_bus
.
BROADCASTRSTACT
Command Request:
Copy {
"transaction_id": 14,
"command": "i3c_ccc_send",
"params": {
"cccName": "BROADCASTRSTACT",
"pushPullClockFrequencyInMHz": "5",
"openDrainClockFrequencyInKHz": "2500",
"cccParams": {
"definingByte": "02"
}
}
}
Responses:
Copy {
"transaction_id": "14",
"status": "success",
"type": "command_response",
"is_promise": true,
"data": {
"command": "i3c_ccc_broadcast_rstact"
}
}
Copy {
"transaction_id": "14",
"status": "success",
"type": "command_response",
"is_promise": false,
"data": {
"is_response_to": "i3c_ccc_broadcast_rstact",
"status": "success"
}
}
Note: Similar to DIRECTRSTACT
but does not require an address parameter.
DIRECTENDXFER
Command Request:
Copy {
"transaction_id": 15,
"command": "i3c_ccc_send",
"params": {
"cccName": "DIRECTENDXFER",
"address": "08",
"pushPullClockFrequencyInMHz": "5",
"openDrainClockFrequencyInKHz": "2500",
"cccParams": {
"definingByte": "AA",
"data": "20"
}
}
}
Responses:
Copy {
"transaction_id": "15",
"status": "success",
"type": "command_response",
"is_promise": true,
"data": {
"command": "i3c_ccc_direct_endxfer"
}
}
Copy {
"transaction_id": "15",
"status": "success",
"type": "command_response",
"is_promise": false,
"data": {
"is_response_to": "i3c_ccc_direct_endxfer",
"status": "success",
"result": {
"payload": [0],
"payload_size": 1
}
}
}
Note: Similar to BROADCASTENDXFER
, but requires an address parameter.
BROADCASTSETXTIME
Command Request:
Copy {
"transaction_id": 16,
"command": "i3c_ccc_send",
"params": {
"cccName": "BROADCASTSETXTIME",
"pushPullClockFrequencyInMHz": "5",
"openDrainClockFrequencyInKHz": "2500",
"cccParams": {
"definingByte": "3F",
"data": ["DE", "AD", "BE", "EF"]
}
}
}
Responses:
Copy {
"transaction_id": "16",
"status": "success",
"type": "command_response",
"is_promise": true,
"data": {
"command": "i3c_ccc_broadcast_setxtime"
}
}
Copy {
"transaction_id": "16",
"status": "success",
"type": "command_response",
"is_promise": false,
"data": {
"is_response_to": "i3c_ccc_broadcast_setxtime",
"status": "success",
"result": {
"payload": [0, 0, 0, 0, 0],
"payload_size": 5
}
}
}
Note: Similar to DIRECTSETXTIME
, but does not require an address parameter.
Currently Supported CCCs: