{
    "application": "viasatNtnProofOfConcept",
    "version": "1.0",
    "description": "Viasat NB-NTN proof of concept for efficient binary data transport",
    "messages": [
        {
            "description": "A basic health/config status message for NB-NTN devices. Minimum size 9 bytes. Maximum size 249 bytes.",
            "direction": "UPLINK",
            "name": "heartbeat",
            "coapVersion": 1,
            "coapType": 1,
            "coapTokenLength": 0,
            "coapCodeClass": 0,
            "coapCodeMethod": 2,
            "messageKey": 4097,
            "fields": [
                {
                    "name": "coapPayloadMarker",
                    "description": "Always set to 0xFF",
                    "type": "uint",
                    "size": 8
                },
                {
                    "name": "imsi",
                    "description": "IMSI of the NTN SIM, not required if using NIDD or devUid.",
                    "type": "uint",
                    "size": 50,
                    "optional": true
                },
                {
                    "name": "devUid",
                    "description": "Unique device ID, not required if using NIDD or imsi. Max 32 characters.",
                    "type": "string",
                    "size": 32,
                    "optional": true,
                    "fixed": false
                },
                {
                    "name": "psk",
                    "description": "Optional Pre-Shared Key when not using NIDD or DTLS. Must be accompanied by imsi or devUid.",
                    "type": "string",
                    "size": 63,
                    "optional": true,
                    "fixed": false
                },
                {
                    "name": "secOfDay",
                    "type": "uint",
                    "size": 17
                },
                {
                    "name": "location",
                    "type": "struct",
                    "optional": true,
                    "fields": [
                        { "name": "latitude", "type": "int", "size": 18, "decalc": "v/1000" },
                        { "name": "longitude", "type": "int", "size": 19, "decalc": "v/1000" }
                    ]
                },
                {
                    "name": "tac",
                    "description": "NB-NTN Tracking Area Code",
                    "type": "uint",
                    "size": 16
                },
                {
                    "name": "rsrp",
                    "type": "int",
                    "description": "- 138 dBm floor; 99 means unknown",
                    "size": 9
                },
                {
                    "name": "rsrq",
                    "type": "int",
                    "description": "- 32 dB floor; 31 means unknown",
                    "size": 6
                },
                {
                    "name": "sinr",
                    "type": "int",
                    "description": "- 32 dB range; 31 means unknown",
                    "size": 6
                },
                {
                    "name": "rssi",
                    "type": "int",
                    "description": "- 110 dBm floor; 99 means unknown",
                    "size": 9,
                    "optional": true
                },
                {
                    "name": "psmConfig",
                    "type": "struct",
                    "optional": true,
                    "fields": [
                        { "name": "tauT3412", "type": "bitmask", "size": 8 },
                        { "name": "actT3324", "type": "bitmask", "size": 8 }
                    ]
                },
                {
                    "name": "edrxConfig",
                    "type": "struct",
                    "optional": true,
                    "fields": [
                        { "name": "edrxCycle", "type": "bitmask", "size": 4 },
                        { "name": "edrxPtw", "type": "bitmask", "size": 4 }
                    ]
                }
            ]
        }
    ]
}