|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
const MessageManager = require("../MessageManager")
|
|
|
|
|
const PagerDevice = require("./Device")
|
|
|
|
|
const Str = require('@supercharge/strings')
|
|
|
|
|
const config = require('../../config.json')
|
|
|
|
|
|
|
|
|
|
// Birdy Slim (IoT) Device
|
|
|
|
|
class BirdySlim extends PagerDevice {
|
|
|
|
@ -8,6 +9,21 @@ class BirdySlim extends PagerDevice {
|
|
|
|
|
super()
|
|
|
|
|
this.duplex = true
|
|
|
|
|
this.name = "birdyslim"
|
|
|
|
|
/*this.birdyParamMapper = {
|
|
|
|
|
//'A': ['beaconIDinstant'], // It is the ID of current localisation beacon.
|
|
|
|
|
//'B': ['beaconIDstored'], // It is the ID of the last localisation beacon seen by the BIRDY
|
|
|
|
|
'C': ['rssi', 2], // It is the POCSAG carrier received level (in dBm) transmitted by the POCSAG emitter and received by the pager.
|
|
|
|
|
//'D': ['date'], // Timestamp in seconds from 01/01/2014.
|
|
|
|
|
//'E': ['beaconRoundIDstored'], // It is the ID of the last round beacon seen by the pager
|
|
|
|
|
'G': ['gps', (1+3+1+5)+(1+2+1+5)+2], // Longitude and latitude in decimal degrees and last acquisition time in minutes.
|
|
|
|
|
'I': ['identityRIC'], // BIRDY first RIC code
|
|
|
|
|
'N': ['messageNumber', 5], // To display message number message must begin with ***Mxxx*** where xxx is the message number.
|
|
|
|
|
'S': ['serial', 13], // BIRDY serial number
|
|
|
|
|
//'T': ['receivedRIC'], // Message receipt RIC code
|
|
|
|
|
'V': ['batteryVoltage', 2], // BIRDY battery voltage in HEX
|
|
|
|
|
//'X': ['lowBattBeacon'], // It is the ID of a beacon with a low battery voltage
|
|
|
|
|
'5': ['msgId', 5], // It is to recall first 5 characters of received message in an acknowledgement.
|
|
|
|
|
}*/
|
|
|
|
|
}
|
|
|
|
|
RandID() {
|
|
|
|
|
return `B${ Str.random(4) }`
|
|
|
|
@ -17,5 +33,21 @@ class BirdySlim extends PagerDevice {
|
|
|
|
|
await MessageManager.BindMsg(msg)
|
|
|
|
|
msg.payload = msg.type === 'duplex' ? `${ msg.id }${ msg.payload }` : msg.payload // only if duplex wanted we add the id
|
|
|
|
|
}
|
|
|
|
|
async tryReceive(data, connector) {
|
|
|
|
|
console.log(data)
|
|
|
|
|
if (typeof(data) === 'object' && !!data.type) {
|
|
|
|
|
switch (data.type) {
|
|
|
|
|
case 'ack':
|
|
|
|
|
if (data.ack === 'recv') {
|
|
|
|
|
require('../ConnectorRegistry').reportDelivered({ id: data.msgid }, `lorawan:${ data.device_id }`) // cheating lol
|
|
|
|
|
require('../MessageManager').attachMetadata(data.msgid, data)
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
return false
|
|
|
|
|
// config.pagers.birdyslim.formatRecvAck
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
module.exports = BirdySlim
|