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.