Sean Cross
4ff0642139
This uses `dvh` and `dvw` rather than `vh` and `vw`, which excludes things like the address bar and the keyboard. Signed-off-by: Sean Cross <sean@xobs.io>
208 lines
6.9 KiB
TypeScript
208 lines
6.9 KiB
TypeScript
import { Request, Application, Response } from 'express';
|
|
|
|
var CONNECTED: boolean = false;
|
|
var SSID: string = '';
|
|
var TASKS = [
|
|
{ 'id': 1, 'name': "ipc0", 'prio': 24, 'state': 'eSuspended', 'stack_hwm': 1244, 'core': '0', 'cpu': 0, 'pc': 0x400559e0 },
|
|
{ 'id': 2, 'name': "ipc1", 'prio': 24, 'state': 'eSuspended', 'stack_hwm': 1236, 'core': '1', 'cpu': 0, 'pc': 0x400559e0 },
|
|
{ 'id': 3, 'name': "esp_timer", 'prio': 22, 'state': 'eSuspended', 'stack_hwm': 2572, 'core': '0', 'cpu': 0, 'pc': 0x400559e0 },
|
|
{ 'id': 5, 'name': "IDLE0", 'prio': 0, 'state': 'eReady', 'stack_hwm': 2340, 'core': '0', 'cpu': 98, 'pc': 0x400559e0 },
|
|
{ 'id': 6, 'name': "IDLE1", 'prio': 0, 'state': 'eReady', 'stack_hwm': 2336, 'core': '1', 'cpu': 99, 'pc': 0x4037d30a },
|
|
{ 'id': 7, 'name': "Tmr Svc", 'prio': 1, 'state': 'eBlocked', 'stack_hwm': 1164, 'core': '0', 'cpu': 0, 'pc': 0x40380e79 },
|
|
{ 'id': 8, 'name': "dbg_log_main", 'prio': 4, 'state': 'eBlocked', 'stack_hwm': 1296, 'core': 'ANY', 'cpu': 0, 'pc': 0x400559e0 },
|
|
{ 'id': 9, 'name': "wifi_manager", 'prio': 5, 'state': 'eBlocked', 'stack_hwm': 1400, 'core': 'ANY', 'cpu': 0, 'pc': 0x400559e0 },
|
|
{ 'id': 10, 'name': "tiT", 'prio': 18, 'state': 'eBlocked', 'stack_hwm': 844, 'core': 'ANY', 'cpu': 0, 'pc': 0x400559e0 },
|
|
{ 'id': 11, 'name': "sys_evt", 'prio': 20, 'state': 'eBlocked', 'stack_hwm': 760, 'core': '0', 'cpu': 0, 'pc': 0x400559e0 },
|
|
{ 'id': 12, 'name': "wifi", 'prio': 23, 'state': 'eBlocked', 'stack_hwm': 3484, 'core': '0', 'cpu': 0, 'pc': 0x400559e0 },
|
|
{ 'id': 13, 'name': "httpd", 'prio': 5, 'state': 'eRunning', 'stack_hwm': 1392, 'core': 'ANY', 'cpu': 0, 'pc': 0x400559e0 },
|
|
{ 'id': 14, 'name': "mdns", 'prio': 1, 'state': 'eBlocked', 'stack_hwm': 2108, 'core': '0', 'cpu': 0, 'pc': 0x400559e0 },
|
|
{ 'id': 15, 'name': "uart_rx_task", 'prio': 1, 'state': 'eBlocked', 'stack_hwm': 1456, 'core': '1', 'cpu': 0, 'pc': 0x400559e0 },
|
|
{ 'id': 16, 'name': "net_uart_task", 'prio': 1, 'state': 'eBlocked', 'stack_hwm': 3848, 'core': 'ANY', 'cpu': 0, 'pc': 0x400559e0 },
|
|
{ 'id': 17, 'name': "gdb_net", 'prio': 1, 'state': 'eBlocked', 'stack_hwm': 592, 'core': 'ANY', 'cpu': 0, 'pc': 0x400559e0 },
|
|
{ 'id': 18, 'name': "tftpOTATask", 'prio': 4, 'state': 'eBlocked', 'stack_hwm': 1520, 'core': 'ANY', 'cpu': 0, 'pc': 0x400559e0 },
|
|
];
|
|
|
|
const GET_ENDPOINTS: { [key: string]: (request: Request, response: Response) => any } = {
|
|
'voltages': getVoltages,
|
|
'target': getTarget,
|
|
'version': getVersion,
|
|
'network': getNetworkStatus,
|
|
'tasks': getTasks,
|
|
'serial': getSerialPort,
|
|
'update': getUpdate,
|
|
'system': getSystem,
|
|
'ap': getAccessPoints,
|
|
};
|
|
|
|
const POST_ENDPOINTS: { [key: string]: (request: Request, response: Response) => any } = {
|
|
'connect': postConnect,
|
|
};
|
|
|
|
const DELETE_ENDPOINTS: { [key: string]: (request: Request, response: Response) => any } = {
|
|
'connect': deleteConnect,
|
|
};
|
|
|
|
function getTasks(_request: Request, response: Response) {
|
|
response.send(TASKS);
|
|
}
|
|
|
|
function getVoltages(_request: Request, response: Response) {
|
|
var voltages: { [key: string]: number } = {
|
|
'system': 3.3 + Math.random() * 0.1 - 0.05,
|
|
'target': 1.8 + Math.random() * 0.1 - 0.05,
|
|
'usb': 5.0 + Math.random() * 0.1 - 0.05,
|
|
'debug': 5.0 + Math.random() * 0.1 - 0.05,
|
|
'ext': 3.7 + Math.random() * 0.1 - 0.05,
|
|
};
|
|
response.send(voltages);
|
|
}
|
|
|
|
function getTarget(_request: Request, response: Response) {
|
|
var target = {
|
|
'name': 'nrf52840',
|
|
'ram': 256 * 1024,
|
|
'flash': 1024 * 1024,
|
|
'cpu': 'ARM Cortex-M4F',
|
|
}
|
|
var targets = [
|
|
'nrf52840',
|
|
'mdf',
|
|
];
|
|
response.send({
|
|
'current': target,
|
|
'available': targets,
|
|
});
|
|
}
|
|
|
|
|
|
function getSerialPort(request: Request, response: Response) {
|
|
var serialPorts = {
|
|
'uart': {
|
|
'name': 'serial',
|
|
'baud_rate': 115200,
|
|
'parity': 'none',
|
|
'stop_bits': 1,
|
|
'data_bits': 8,
|
|
'flow_control': 'none',
|
|
},
|
|
'swo': {
|
|
'name': 'swo',
|
|
'baud_rate': 0,
|
|
'parity': 'none',
|
|
'stop_bits': 1,
|
|
'data_bits': 8,
|
|
'flow_control': 'none',
|
|
},
|
|
'uuart': {
|
|
'name': 'uuart',
|
|
'baud_rate': 0,
|
|
'parity': 'none',
|
|
'stop_bits': 1,
|
|
'data_bits': 8,
|
|
'flow_control': 'none',
|
|
},
|
|
}
|
|
response.send(serialPorts);
|
|
}
|
|
|
|
function getUpdate(request: Request, response: Response) {
|
|
response.send({
|
|
'current_partition': {
|
|
'addr': 0x00010000,
|
|
'index': 2,
|
|
},
|
|
'next_partition': {
|
|
'addr': 0x00380000,
|
|
'index': -1,
|
|
},
|
|
});
|
|
}
|
|
|
|
function getSystem(request: Request, response: Response) {
|
|
response.send({
|
|
'heap': 149552,
|
|
'uptime': 1551000,
|
|
});
|
|
}
|
|
|
|
function getVersion(_request: Request, response: Response) {
|
|
response.send({
|
|
'farpatch': '0.1.0',
|
|
'bmp': '0.1.0',
|
|
'hardware': 'DVT5',
|
|
});
|
|
}
|
|
|
|
function getNetworkStatus(request: Request, response: Response) {
|
|
if (CONNECTED) {
|
|
response.send({ "ssid": SSID, "ip": "10.0.237.133", "netmask": "255.255.255.0", "gw": "10.0.237.1", "urc": 0 });
|
|
} else {
|
|
response.send({ "ssid": "", "ip": "0", "netmask": "0", "gw": "0", "urc": 2 });
|
|
}
|
|
}
|
|
|
|
function getAccessPoints(_request: Request, response: Response) {
|
|
response.send([{ "ssid": "Omicron Persei 8", "chan": 6, "rssi": -50, "auth": 3 },
|
|
{ "ssid": "Parelivingroom", "chan": 1, "rssi": -71, "auth": 4 },
|
|
{ "ssid": "HappyWifiHappyLife", "chan": 8, "rssi": -71, "auth": 3 },
|
|
{ "ssid": "SINGTEL-AV4U", "chan": 1, "rssi": -77, "auth": 3 },
|
|
{ "ssid": "TP Living Room", "chan": 9, "rssi": -77, "auth": 3 },
|
|
{ "ssid": "Brett_Home", "chan": 1, "rssi": -80, "auth": 3 },
|
|
{ "ssid": "黄 Fam", "chan": 6, "rssi": -80, "auth": 3 }]);
|
|
}
|
|
|
|
function postConnect(request: Request, response: Response) {
|
|
var ssid = request.headers['x-custom-ssid'];
|
|
var password = request.headers['x-custom-pwd'];
|
|
|
|
if (!ssid || !password) {
|
|
response.status(400).send({ 'error': 'Missing SSID or password' });
|
|
return;
|
|
}
|
|
response.send('{}');
|
|
CONNECTED = true;
|
|
if (typeof ssid === 'string') {
|
|
SSID = ssid;
|
|
} else {
|
|
SSID = ssid[0];
|
|
}
|
|
}
|
|
|
|
function deleteConnect(_request: Request, response: Response) {
|
|
console.log("Deleting connection");
|
|
response.send('{}');
|
|
CONNECTED = false;
|
|
SSID = '';
|
|
}
|
|
|
|
function reportEndpoints(_request: Request, response: Response) {
|
|
var getEndpointsArray = [];
|
|
for (var endpoint in GET_ENDPOINTS) {
|
|
getEndpointsArray.push('/fp/' + endpoint);
|
|
}
|
|
|
|
var postEndpointsArray = [];
|
|
for (var endpoint in POST_ENDPOINTS) {
|
|
postEndpointsArray.push('/fp/' + endpoint);
|
|
}
|
|
response.send({
|
|
'endpoints': {
|
|
'get': getEndpointsArray,
|
|
'post': postEndpointsArray,
|
|
}
|
|
});
|
|
}
|
|
|
|
export function installMiddlewares(app: Application) {
|
|
app.get('/fp/', reportEndpoints);
|
|
for (var endpoint in GET_ENDPOINTS) {
|
|
app.get('/fp/' + endpoint, GET_ENDPOINTS[endpoint]);
|
|
}
|
|
for (var endpoint in POST_ENDPOINTS) {
|
|
app.post('/fp/' + endpoint, POST_ENDPOINTS[endpoint]);
|
|
}
|
|
for (var endpoint in DELETE_ENDPOINTS) {
|
|
app.delete('/fp/' + endpoint, DELETE_ENDPOINTS[endpoint]);
|
|
}
|
|
}
|