test code

master
cheetah 4 years ago
parent a591f39d81
commit 9a738d41cd

@ -0,0 +1,14 @@
const amqp = require('amqp-connection-manager')
// Create a connetion manager
const connection = amqp.connect(['amqp://daemon:daemon@10.13.37.37:5672/'])
connection.on('connect', () => console.log('Connected!'))
connection.on('disconnect', err => console.log('Disconnected.', err.stack))
const types = require('./types') // also initalized the CentralEventEmitter
types.ConnectorRegistry.register(new types.Connectors.POCSAGConnector(connection)) // activate POCSAG
types.ConnectorRegistry.transmit("pocsag", {
ric: '133701',
body: "AAAA"
})

@ -0,0 +1,23 @@
{
"name": "pocsag-daemon",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/smartpager-network/pocsag-daemon.git"
},
"author": "catSIXe",
"license": "ISC",
"bugs": {
"url": "https://github.com/smartpager-network/pocsag-daemon/issues"
},
"homepage": "https://github.com/smartpager-network/pocsag-daemon#readme",
"dependencies": {
"amqp-connection-manager": "^3.2.2",
"amqplib": "^0.7.0"
}
}

@ -0,0 +1,16 @@
const { POCSAGConnector } = require("./connectors")
class ConnectorRegistry {
constructor() {
this.Connectors = {}
}
register(connector) {
this.Connectors[ connector.name ] = connector
}
transmit(name, message) {
if (!this.Connectors[ name ]) throw "not registred"
this.Connectors[ name ].transmitMessage(message)
}
}
const registry = new ConnectorRegistry()
module.exports = registry

@ -0,0 +1,14 @@
const { GenericPager, BirdySlim } = require("./devices")
class DeviceRegistry {
constructor() {
this.Devices = {}
}
register(device) {
this.Devices[ device.name ] = device
}
}
const registry = new DeviceRegistry()
registry.register(new GenericPager())
registry.register(new BirdySlim())
module.exports = registry

@ -0,0 +1,12 @@
class Message {
ID
Type
RoutingMask
Content
constructor() {
}
}
module.exports = Message

@ -0,0 +1,6 @@
class RouteablePage {
id
constructor() {
}
}

@ -0,0 +1,10 @@
class Connector {
constructor (amqpConnMngr) {
this.amqpConnMngr = amqpConnMngr
this.name = "_base"
}
transmitMessage(msg) {
throw "not implemented"
}
}
module.exports = Connector

@ -0,0 +1,9 @@
const Connector = require("./Connector")
class DAPNETConnector extends Connector {
constructor (amqpConnMngr) {
super(amqpConnMngr)
this.name = "dapnet"
}
}
module.exports = DAPNETConnector

@ -0,0 +1,9 @@
const Connector = require("./Connector")
class LoRaWANConnector extends Connector {
constructor (amqpConnMngr) {
super(amqpConnMngr)
this.name = "lorawan"
}
}
module.exports = LoRaWANConnector

@ -0,0 +1,41 @@
const Connector = require("./Connector")
class POCSAGConnector extends Connector {
constructor (amqpConnMngr) {
super(amqpConnMngr)
this.name = "pocsag"
this.channelWrapper = this.amqpConnMngr.createChannel({
json: false,
setup: function(channel) {
return channel.assertQueue('tx_pocsag', { durable: true })
}
})
}
transmitMessage(msg) {
if (!msg.ric) return false
const RIC = msg.ric
const lastChar = RIC[RIC.length - 1].charCodeAt(0) - 65
const addressPart = lastChar >= 0 && lastChar <= 3 ? RIC.substring(0, RIC.length - 1) : RIC
const functionBits = lastChar >= 0 && lastChar <= 3 ? lastChar : 0
this.channelWrapper.sendToQueue('tx_pocsag', Buffer.from(msg.body), {
headers: {
ric: {
'!': 'int64',
value: addressPart
},
function: {
'!': 'int64',
value: functionBits
},
}
})
.then(function() {
return console.log("Message was sent! Hooray!")
}).catch(function(err) {
return console.log(err,"Message was rejected... Boo!")
})
}
}
module.exports = POCSAGConnector

@ -0,0 +1,6 @@
module.exports = {
DAPNETConnector: require("./DAPNETConnector"),
LoRaWANConnector: require("./LoRaWANConnector"),
POCSAGConnector: require("./POCSAGConnector"),
Connector: require("./Connector"),
}

@ -0,0 +1,12 @@
const PagerDevice = require("./Device")
// Birdy Slim (IoT) Device
class BirdySlim extends PagerDevice {
constructor () {
super()
this.name = "birdyslim"
}
formatTX(msg) {
}
}
module.exports = BirdySlim

@ -0,0 +1,8 @@
class PagerDevice {
constructor () {
this.name = "_base"
}
formatTX(msg) {
}
}
module.exports = PagerDevice

@ -0,0 +1,11 @@
const PagerDevice = require("./Device")
class GenericPager extends PagerDevice {
constructor () {
super()
this.name = "generic"
}
transmit(msg) {
}
}
module.exports = GenericPager

@ -0,0 +1,5 @@
module.exports = {
GenericPager: require("./GenericPager"),
BirdySlim: require("./BirdySlim"),
Device: require("./Device"),
}

@ -0,0 +1,11 @@
const events = require('events')
module.exports = {
CentralEventEmitter: new events.EventEmitter(),
Connectors: require("./connectors"),
devices: require("./devices"),
Message: require("./Message"),
RouteablePage: require("./RouteablePage"),
DeviceRegistry: require("./DeviceRegistry"),
ConnectorRegistry: require("./ConnectorRegistry"),
}
Loading…
Cancel
Save