Previous posts in this series:
NPNT Regulations – Part 1: UIN, UAOP, Operational Restrictions
NPNT Regulations – Part 2: Flight Module Provider and Registered Flight Module
NPNT Regulations – Part 3: Digital Sky App, RPAS Acquisition Application, UAOP License Application
NPNT Regulations – Part 4: Drone Registration on Digital Sky App, Management Server and UIN Application
NPNT Regulations – Part 5: Permission Application on Digital Sky App

As per the NPNT Guidance Manual, the Registered Flight Module within the drone should generate logs upon every flight. After the flight, the logs should be bundled and signed using the RFM Private Key. The operator needs to upload this log bundle to Digital Sky.

Note: At the time of writing this blog, the RPAS Guidance Manual was not up-to-date with the Digital Sky implementation. There is a slight difference between the log format specified in the RPAS Guidance Manual as compared to the log format accepted by Digital Sky. In this blog, we will be using the log format as accepted by Digital Sky.

Log Generation

The RFM module within the drone should log the following events:

Take-off

The RFM module should log the coordinates and timestamp for the takeoff event.

{
    "entryType": "TAKEOFF/ARM",
    "timeStamp": 1569645275,
    "longitude": 77.59,
    "latitude": 12.97,
    "altitude": 100,
    "crc": 719
}

Land

The RFM module should log the coordinates and timestamp for the land event.

{
    "entryType": "LAND/DISARM",
    "timeStamp": 1569645275,
    "longitude": 77.59,
    "latitude": 12.97,
    "altitude": 100,
    "crc": 719
}

Geo-fence Breach

In case of geo-fence breach (area or altitude), the RFM module should log the timestamp and coordinates at 1Hz interval.

{
    "entryType": "GEOFENCE_BREACH",
    "timeStamp": 1569645275,
    "longitude": 77.59,
    "latitude": 12.97,
    "altitude": 100,
    "crc": 719
} 

Time Limit Breach

In case of time limit breach, the RFM module should log the timestamp and coordinates at 1Hz interval.

{
    "entryType": "TIME_BREACH",
    "timeStamp": 1569645275,
    "longitude": 77.59,
    "latitude": 12.97,
    "altitude": 100,
    "crc": 719
}

Log Bundling

The log entries need to be bundled in a JSON document. The JSON document should be signed using the RFM Private Key and signature should be included within the JSON document. Each log bundle should include the signature of previous log bundle as the value for the previousLogHash parameter.

{
    "flightLog": {
        "permissionArtefact": "5d7f3121fb31590004f94c29",
        "previousLogHash": "SnGl74b/b+3R0TcZAzJ2m8vM4DMoWeDKPpWFEhHIrfPAx2+Ss1U4rIE4Yd6WHDeLfo7FFAez4FpSwNPEcqcHE9ByA8q9UwyzyhmIdYiFanf5hUXoWnLyNfIcvQtbf5yWiYE2fNmIVDFoJ8ge/OffN3GQwXftm2KyMwI8yMNsaz1L/vdvoVJYemxxmFxlGivUs6opMi3a5tEV1KTb5U2tXdCIswTR7NBSYKvfIAvrBMrPwKCT+UMo7mv+Awq6KlBORAhMu1fGfbOFTBdpFN8nxzboELuk+ENUkdLYWqAuHh/jK3wCPCu6tj+y/uarE5lsuHZ3QMLFjQqyjR0fC+QuEg==",
        "logEntries": [
            {
                "entryType": "TAKEOFF/ARM",
                "timeStamp": 1569645275,
                "longitude": 77.59,
                "latitude": 12.97,
                "altitude": 704,
                "crc": 719
            },
            {
                "entryType": "LAND/DISARM",
                "timeStamp": 1569652728,
                "longitude": 77.59,
                "latitude": 12.97,
                "altitude": 704,
                "crc": 719
            }
        ]
    },
    "signature": "EheYRGCbk8ReJMOykmu0ktYSdfPk2piPtP4H1NJvcHCTGscjavzINgXJqJ92CxWGDix/vSpRb24T/lvxdmPQhEnuoegRuMkiYr9aJjR23slRGGuQRDe6/cT8qbTdpslKRsn+7ZDZQyy3pFuui9Q4ijLF3Suhr4nzSM26V3P+rD2A4Dxq5t+bqETyDn6+w5pv+HK464LiNQbPcmKO3WhYbl+zhSuGViydi6mUL3ji0yxnNov/98wGVRySQbUKkYtQETvX04Fdu6XwKLtv+YLMIctKZEmXJmhlHCI6ai8KQL/nx4IwmV3BT9wpIqPq7HZpg41cIjL9wZFDKsGrcIByfw=="
} 

Log Submission

The operator needs to upload the complete log bundle to Digital Sky in the Permission Application screen.