UPD: Rename nanodevices API to nanoSerialApi

This commit is contained in:
Robert Kossessa
2024-03-11 21:32:42 +01:00
parent 67636955ac
commit 0c117e2c76
8 changed files with 74 additions and 76 deletions

View File

@@ -2,7 +2,7 @@ import { app, shell, BrowserWindow, ipcMain, Menu, MenuItem } from 'electron'
import { join } from 'path' import { join } from 'path'
import { electronApp, optimizer, is } from '@electron-toolkit/utils' import { electronApp, optimizer, is } from '@electron-toolkit/utils'
import icon from '../../resources/icon.png?asset' import icon from '../../resources/icon.png?asset'
import nanodevices from './backend/nanodevices' import nanoSerialApi from './nanoSerialApi'
const zoomFactor = 1 const zoomFactor = 1
const windowWidth = 1111 const windowWidth = 1111
@@ -95,10 +95,10 @@ app.whenReady().then(() => {
optimizer.watchWindowShortcuts(window) optimizer.watchWindowShortcuts(window)
}) })
ipcMain.handle('nanodevices:list_devices', () => nanodevices.list_devices()) ipcMain.handle('nanoSerialApi:list_devices', () => nanoSerialApi.list_devices())
ipcMain.handle('nanodevices:connect', (event, deviceid) => nanodevices.connect(deviceid)) ipcMain.handle('nanoSerialApi:connect', (event, deviceid) => nanoSerialApi.connect(deviceid))
ipcMain.handle('nanodevices:disconnect', () => nanodevices.disconnect) ipcMain.handle('nanoSerialApi:disconnect', () => nanoSerialApi.disconnect)
ipcMain.handle('nanodevices:send', (event, ...data) => nanodevices.send(data[0], data[1])) ipcMain.handle('nanoSerialApi:send', (event, ...data) => nanoSerialApi.send(data[0], data[1]))
const mainWindow = createMainWindow() const mainWindow = createMainWindow()
ipcMain.on('electron:minimizeWindow', () => mainWindow.minimize()) ipcMain.on('electron:minimizeWindow', () => mainWindow.minimize())
ipcMain.on('electron:toggleMaximizeWindow', () => { ipcMain.on('electron:toggleMaximizeWindow', () => {
@@ -112,29 +112,29 @@ app.whenReady().then(() => {
ipcMain.on('electron:openExternal', (_event, url) => shell.openExternal(url)) ipcMain.on('electron:openExternal', (_event, url) => shell.openExternal(url))
ipcMain.on('electron:openDevTools', () => mainWindow.webContents.toggleDevTools()) ipcMain.on('electron:openDevTools', () => mainWindow.webContents.toggleDevTools())
ipcMain.on('electron:reload', () => mainWindow.webContents.reloadIgnoringCache()) ipcMain.on('electron:reload', () => mainWindow.webContents.reloadIgnoringCache())
nanodevices.on('nanodevices:device-attached', (deviceid, ...data) => { nanoSerialApi.on('nanoSerialApi:device-attached', (deviceid, ...data) => {
console.log('Attached event', deviceid, data) console.log('Attached event', deviceid, data)
mainWindow.webContents.send('nanodevices:event', 'device-attached', deviceid, ...data) mainWindow.webContents.send('nanoSerialApi:event', 'device-attached', deviceid, ...data)
}) })
nanodevices.on('nanodevices:device-detached', (deviceid, ...data) => { nanoSerialApi.on('nanoSerialApi:device-detached', (deviceid, ...data) => {
console.log('Detached event', deviceid, data) console.log('Detached event', deviceid, data)
mainWindow.webContents.send('nanodevices:event', 'device-detached', deviceid, ...data) mainWindow.webContents.send('nanoSerialApi:event', 'device-detached', deviceid, ...data)
}) })
nanodevices.on('nanodevices:device-error', (deviceid, ...data) => { nanoSerialApi.on('nanoSerialApi:device-error', (deviceid, ...data) => {
console.log('Error event', deviceid, data) console.log('Error event', deviceid, data)
mainWindow.webContents.send('nanodevices:event', 'device-error', deviceid, ...data) mainWindow.webContents.send('nanoSerialApi:event', 'device-error', deviceid, ...data)
}) })
nanodevices.on('nanodevices:connected', (deviceid, ...data) => { nanoSerialApi.on('nanoSerialApi:connected', (deviceid, ...data) => {
console.log('Connected event', deviceid, data) console.log('Connected event', deviceid, data)
mainWindow.webContents.send('nanodevices:event', 'connected', deviceid, ...data) mainWindow.webContents.send('nanoSerialApi:event', 'connected', deviceid, ...data)
}) })
nanodevices.on('nanodevices:disconnected', (deviceid, ...data) => { nanoSerialApi.on('nanoSerialApi:disconnected', (deviceid, ...data) => {
console.log('Disconnected event', deviceid, data) console.log('Disconnected event', deviceid, data)
mainWindow.webContents.send('nanodevices:event', 'disconnected', deviceid, ...data) mainWindow.webContents.send('nanoSerialApi:event', 'disconnected', deviceid, ...data)
}) })
nanodevices.on('nanodevices:update', (deviceid, ...data) => { nanoSerialApi.on('nanoSerialApi:update', (deviceid, ...data) => {
console.log('Update event', deviceid, data) console.log('Update event', deviceid, data)
mainWindow.webContents.send('nanodevices:event', 'update', deviceid, ...data) mainWindow.webContents.send('nanoSerialApi:event', 'update', deviceid, ...data)
}) })
const menu = new Menu() const menu = new Menu()
for (const menuItem of Object.values(appMenu)) { for (const menuItem of Object.values(appMenu)) {
@@ -172,7 +172,7 @@ app.whenReady().then(() => {
Menu.setApplicationMenu(menu) Menu.setApplicationMenu(menu)
//mainWindow.webContents.openDevTools() //mainWindow.webContents.openDevTools()
setInterval(() => nanodevices._list(), 1000) setInterval(() => nanoSerialApi._list(), 1000)
app.on('activate', function () { app.on('activate', function () {
// On macOS it's common to re-create a window in the app when the // On macOS it's common to re-create a window in the app when the

View File

@@ -7,7 +7,7 @@ const NANO_PRODUCT_ID = '1001'
const NANO_VENDOR_ID = '303A' const NANO_VENDOR_ID = '303A'
const NANO_BAUD_RATE = 115200 const NANO_BAUD_RATE = 115200
class NanoDevices extends EventEmitter { class NanoSerialApi extends EventEmitter {
all_nano_devices: { [key: string]: PortInfo } = {} all_nano_devices: { [key: string]: PortInfo } = {}
connected_nano_devices: { [key: string]: { port: SerialPort } } = {} connected_nano_devices: { [key: string]: { port: SerialPort } } = {}
@@ -25,7 +25,7 @@ class NanoDevices extends EventEmitter {
found_nano_devices.push(port.serialNumber) found_nano_devices.push(port.serialNumber)
if (this.all_nano_devices[port.serialNumber] === undefined) { if (this.all_nano_devices[port.serialNumber] === undefined) {
this.all_nano_devices[port.serialNumber] = port this.all_nano_devices[port.serialNumber] = port
this.emit('nanodevices:device-attached', port.serialNumber) this.emit('nanoSerialApi:device-attached', port.serialNumber)
console.log('attached', port.serialNumber) console.log('attached', port.serialNumber)
} }
} }
@@ -34,7 +34,7 @@ class NanoDevices extends EventEmitter {
for (const serialNumber in this.all_nano_devices) { for (const serialNumber in this.all_nano_devices) {
if (found_nano_devices.indexOf(serialNumber) === -1) { if (found_nano_devices.indexOf(serialNumber) === -1) {
delete this.all_nano_devices[serialNumber] delete this.all_nano_devices[serialNumber]
this.emit('nanodevices:device-detached', serialNumber) this.emit('nanoSerialApi:device-detached', serialNumber)
console.log('detached', serialNumber) console.log('detached', serialNumber)
} }
} }
@@ -53,7 +53,7 @@ class NanoDevices extends EventEmitter {
if (lines[i].length > 0) { if (lines[i].length > 0) {
if (lines[i].startsWith('{')) if (lines[i].startsWith('{'))
// if its a json object // if its a json object
this.emit('nanodevices:update', serialNumber, lines[i]) this.emit('nanoSerialApi:update', serialNumber, lines[i])
else console.log('Device: ' + lines[i]) // otherwise just log it else console.log('Device: ' + lines[i]) // otherwise just log it
} }
} }
@@ -94,18 +94,18 @@ class NanoDevices extends EventEmitter {
}) })
port.on('error', (err) => { port.on('error', (err) => {
// forward error to FE // forward error to FE
this.emit('nanodevices:error', nano_device.serialNumber, err) this.emit('nanoSerialApi:error', nano_device.serialNumber, err)
}) })
port.on('close', (err) => { port.on('close', (err) => {
if (err && err.disconnected) { if (err && err.disconnected) {
// forward close to FE // forward close to FE
this.emit('nanodevices:disconnected', nano_device.serialNumber) this.emit('nanoSerialApi:disconnected', nano_device.serialNumber)
} }
delete this.connected_nano_devices[nano_device.serialNumber!] delete this.connected_nano_devices[nano_device.serialNumber!]
}) })
port.on('open', () => { port.on('open', () => {
this.connected_nano_devices[nano_device.serialNumber!] = { port: port } this.connected_nano_devices[nano_device.serialNumber!] = { port: port }
this.emit('nanodevices:connected', nano_device.serialNumber) this.emit('nanoSerialApi:connected', nano_device.serialNumber)
resolve(nano_device.serialNumber) resolve(nano_device.serialNumber)
}) })
port.on('data', (data) => { port.on('data', (data) => {
@@ -138,6 +138,6 @@ class NanoDevices extends EventEmitter {
} }
} }
const nanodevices = new NanoDevices() const nanoSerialApi = new NanoSerialApi()
export default nanodevices export default nanoSerialApi

View File

@@ -1,4 +1,4 @@
export interface INanoDevicesAPI { export interface INanoSerialApi {
list_devices(): Promise<string[]> list_devices(): Promise<string[]>
connect(deviceid: string): Promise<string> connect(deviceid: string): Promise<string>
disconnect(deviceid: string): Promise<string> disconnect(deviceid: string): Promise<string>
@@ -10,7 +10,7 @@ export interface INanoDevicesAPI {
save(deviceid: string): Promise<void> save(deviceid: string): Promise<void>
} }
export interface IElectronAPI { export interface IElectronApi {
platform: NodeJS.Platform platform: NodeJS.Platform
isDevelopment: boolean isDevelopment: boolean
minimizeWindow: () => void minimizeWindow: () => void
@@ -26,7 +26,7 @@ export interface IElectronAPI {
declare global { declare global {
interface Window { interface Window {
nanoDevicesAPI: INanoDevicesAPI nanoSerialApi: INanoSerialApi
electronAPI: IElectronAPI electronApi: IElectronApi
} }
} }

View File

@@ -1,19 +1,19 @@
import { contextBridge, ipcRenderer } from 'electron' import { contextBridge, ipcRenderer } from 'electron'
// expose an API to choose available devices // expose an API to choose available devices
contextBridge.exposeInMainWorld('nanoDevicesAPI', { contextBridge.exposeInMainWorld('nanoSerialApi', {
list_devices() { list_devices() {
return ipcRenderer.invoke('nanodevices:list_devices') return ipcRenderer.invoke('nanoSerialApi:list_devices')
}, },
connect(deviceid) { connect(deviceid) {
return ipcRenderer.invoke('nanodevices:connect', deviceid) return ipcRenderer.invoke('nanoSerialApi:connect', deviceid)
}, },
disconnect(deviceid) { disconnect(deviceid) {
return ipcRenderer.invoke('nanodevices:disconnect', deviceid) return ipcRenderer.invoke('nanoSerialApi:disconnect', deviceid)
}, },
on_event(eventid_filter, callback) { on_event(eventid_filter, callback) {
//console.log('attaching filter for ', eventid_filter) //console.log('attaching filter for ', eventid_filter)
ipcRenderer.on('nanodevices:event', (_event, eventid, deviceid, ...data) => { ipcRenderer.on('nanoSerialApi:event', (_event, eventid, deviceid, ...data) => {
//console.log('Event in ipcRenderer ', eventid, deviceid, data) //console.log('Event in ipcRenderer ', eventid, deviceid, data)
if (eventid_filter == '*' || eventid_filter == eventid) { if (eventid_filter == '*' || eventid_filter == eventid) {
callback(eventid, deviceid, ...data) callback(eventid, deviceid, ...data)
@@ -21,14 +21,14 @@ contextBridge.exposeInMainWorld('nanoDevicesAPI', {
}) })
}, },
send(deviceid, obj) { send(deviceid, obj) {
return ipcRenderer.invoke('nanodevices:send', deviceid, JSON.stringify(obj)) return ipcRenderer.invoke('nanoSerialApi:send', deviceid, JSON.stringify(obj))
}, },
save(deviceid) { save(deviceid) {
return ipcRenderer.invoke('nanodevices:send', deviceid, JSON.stringify({ save: true })) return ipcRenderer.invoke('nanoSerialApi:send', deviceid, JSON.stringify({ save: true }))
} }
}) })
contextBridge.exposeInMainWorld('electronAPI', { contextBridge.exposeInMainWorld('electronApi', {
platform: process.platform, platform: process.platform,
isDevelopment: process.env.NODE_ENV !== 'production', isDevelopment: process.env.NODE_ENV !== 'production',
minimizeWindow: () => ipcRenderer.send('electron:minimizeWindow'), minimizeWindow: () => ipcRenderer.send('electron:minimizeWindow'),

View File

@@ -6,7 +6,7 @@ import Navbar from '@renderer/components/navbar/Navbar.vue'
import { useStore } from '@renderer/store' import { useStore } from '@renderer/store'
import { useMessageHandlers } from '@renderer/device' import { useMessageHandlers } from '@renderer/device'
const { electronAPI, nanoDevicesAPI } = window const { electronApi, nanoSerialApi } = window
const store = useStore() const store = useStore()
const menuActions = { const menuActions = {
@@ -15,7 +15,7 @@ const menuActions = {
skin: () => store.switchPreviewDeviceModel() skin: () => store.switchPreviewDeviceModel()
} }
electronAPI.onMenu((key) => { electronApi.onMenu((key) => {
console.log('menu', key) console.log('menu', key)
if (menuActions[key]) { if (menuActions[key]) {
menuActions[key]() menuActions[key]()
@@ -26,20 +26,18 @@ store.fetchProfiles() // TODO remove me!
// handle device events // handle device events
const handlers = useMessageHandlers(store) const handlers = useMessageHandlers(store)
nanoDevicesAPI.on_event('device-attached', (evt, deviceid, data) => store.device_attached(deviceid)) nanoSerialApi.on_event('device-attached', (evt, deviceid, data) => store.device_attached(deviceid))
nanoDevicesAPI.on_event('device-detached', (evt, deviceid, data) => store.device_detached(deviceid)) nanoSerialApi.on_event('device-detached', (evt, deviceid, data) => store.device_detached(deviceid))
nanoDevicesAPI.on_event('device-error', (evt, deviceid, data) => { nanoSerialApi.on_event('device-error', (evt, deviceid, data) => {
/* TODO handle connection errors */ /* TODO handle connection errors */
}) })
nanoDevicesAPI.on_event('connected', (evt, deviceid, data) => store.device_connected(deviceid)) nanoSerialApi.on_event('connected', (evt, deviceid, data) => store.device_connected(deviceid))
nanoDevicesAPI.on_event('disconnected', (evt, deviceid, data) => nanoSerialApi.on_event('disconnected', (evt, deviceid, data) => store.device_disconnected(deviceid))
store.device_disconnected(deviceid) nanoSerialApi.on_event('update', (evt, deviceid, data) => {
)
nanoDevicesAPI.on_event('update', (evt, deviceid, data) => {
handlers.handle_message(data) handlers.handle_message(data)
}) })
// get list of the currently attached devices // get list of the currently attached devices
nanoDevicesAPI.list_devices().then((devs) => store.init_devices(devs)) nanoSerialApi.list_devices().then((devs) => store.init_devices(devs))
</script> </script>
<template> <template>
<main class="flex h-screen w-screen select-none flex-col"> <main class="flex h-screen w-screen select-none flex-col">

View File

@@ -86,32 +86,32 @@
</MenubarMenu> </MenubarMenu>
<MenubarButton <MenubarButton
class="app-titlebar-button" class="app-titlebar-button"
@click="electronAPI.openExternal('https://discord.gg/jgRd77YN5T')" @click="electronApi.openExternal('https://discord.gg/jgRd77YN5T')"
> >
Community Community
</MenubarButton> </MenubarButton>
<MenubarMenu> <MenubarMenu>
<MenubarTrigger class="app-titlebar-button">Help</MenubarTrigger> <MenubarTrigger class="app-titlebar-button">Help</MenubarTrigger>
<MenubarContent> <MenubarContent>
<MenubarItem @click="electronAPI.openExternal('https://github.com/katbinaris/zeroone')" <MenubarItem @click="electronApi.openExternal('https://github.com/katbinaris/zeroone')"
>Software Source</MenubarItem >Software Source</MenubarItem
> >
<MenubarItem <MenubarItem
@click="electronAPI.openExternal('https://github.com/katbinaris/NanoD_RatchetH1')" @click="electronApi.openExternal('https://github.com/katbinaris/NanoD_RatchetH1')"
>Firmware Source</MenubarItem >Firmware Source</MenubarItem
> >
<MenubarItem <MenubarItem
@click="electronAPI.openExternal('https://github.com/katbinaris/Nano_D_PlusPlus')" @click="electronApi.openExternal('https://github.com/katbinaris/Nano_D_PlusPlus')"
>Hardware Source</MenubarItem >Hardware Source</MenubarItem
> >
<MenubarSeparator /> <MenubarSeparator />
<MenubarItem <MenubarItem
@click="electronAPI.openExternal('https://github.com/katbinaris/zeroone/issues/new')" @click="electronApi.openExternal('https://github.com/katbinaris/zeroone/issues/new')"
>Report Software Issue</MenubarItem >Report Software Issue</MenubarItem
> >
<MenubarItem <MenubarItem
@click=" @click="
electronAPI.openExternal('https://github.com/katbinaris/NanoD_RatchetH1/issues/new') electronApi.openExternal('https://github.com/katbinaris/NanoD_RatchetH1/issues/new')
" "
>Report Device Issue</MenubarItem >Report Device Issue</MenubarItem
> >
@@ -120,13 +120,13 @@
<p>Software Version:&nbsp;</p> <p>Software Version:&nbsp;</p>
<p>v0.1</p> <p>v0.1</p>
</MenubarItem> </MenubarItem>
<MenubarItem @click="electronAPI.openExternal('https://discord.gg/jgRd77YN5T')" <MenubarItem @click="electronApi.openExternal('https://discord.gg/jgRd77YN5T')"
>Contact Support</MenubarItem >Contact Support</MenubarItem
> >
<template v-if="electronAPI.isDevelopment"> <template v-if="electronApi.isDevelopment">
<MenubarSeparator /> <MenubarSeparator />
<MenubarItem @click="electronAPI.openDevTools">Developer Tools</MenubarItem> <MenubarItem @click="electronApi.openDevTools">Developer Tools</MenubarItem>
<MenubarItem @click="electronAPI.reload">Reload</MenubarItem> <MenubarItem @click="electronApi.reload">Reload</MenubarItem>
</template> </template>
</MenubarContent> </MenubarContent>
</MenubarMenu> </MenubarMenu>
@@ -145,7 +145,7 @@
: 'border-2' : 'border-2'
" "
class="app-titlebar-button" class="app-titlebar-button"
@click="nanoDevicesAPI.save(store.connectedId)" @click="nanoSerialApi.save(store.connectedId)"
> >
Save Save
</MenubarButton> </MenubarButton>
@@ -162,21 +162,21 @@
<button <button
v-if="minimizable" v-if="minimizable"
class="app-titlebar-button flex grow items-center justify-center px-2 hover:text-white" class="app-titlebar-button flex grow items-center justify-center px-2 hover:text-white"
@click="electronAPI.minimizeWindow" @click="electronApi.minimizeWindow"
> >
<Minus class="size-5" /> <Minus class="size-5" />
</button> </button>
<button <button
v-if="maximizable" v-if="maximizable"
class="app-titlebar-button flex grow items-center justify-center px-2 hover:text-white" class="app-titlebar-button flex grow items-center justify-center px-2 hover:text-white"
@click="electronAPI.toggleMaximizeWindow" @click="electronApi.toggleMaximizeWindow"
> >
<Copy v-if="isMaximized" class="size-4" /> <Copy v-if="isMaximized" class="size-4" />
<Square v-else class="mr-0.5 size-3.5" /> <Square v-else class="mr-0.5 size-3.5" />
</button> </button>
<button <button
class="app-titlebar-button flex grow items-center justify-center px-2 hover:text-white" class="app-titlebar-button flex grow items-center justify-center px-2 hover:text-white"
@click="electronAPI.closeWindow" @click="electronApi.closeWindow"
> >
<X class="mr-0.5 size-5" /> <X class="mr-0.5 size-5" />
</button> </button>
@@ -209,9 +209,9 @@ const showDisconnectButton = ref(false)
const isMaximized = ref(false) const isMaximized = ref(false)
const { electronAPI, nanoDevicesAPI } = window const { electronApi, nanoSerialApi } = window
const isMacOS = electronAPI.platform === 'darwin' const isMacOS = electronApi.platform === 'darwin'
const zoomFactor = ref(1) const zoomFactor = ref(1)
const numberOfChanges = ref(27) const numberOfChanges = ref(27)
@@ -225,12 +225,12 @@ onMounted(() => {
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
zoomFactor.value = window.outerWidth / window.innerWidth zoomFactor.value = window.outerWidth / window.innerWidth
}) })
electronAPI.onMaximized((maximized) => { electronApi.onMaximized((maximized) => {
console.log(maximized) console.log(maximized)
isMaximized.value = true isMaximized.value = true
}) })
electronAPI.onUnmaximized(() => { electronApi.onUnmaximized(() => {
isMaximized.value = false isMaximized.value = false
}) })
}) })

View File

@@ -21,7 +21,7 @@ app.use(pinia)
app.use(i18n) app.use(i18n)
// TODO remove this // TODO remove this
window.nanoDevicesAPI.on_event('*', (eventid, deviceid, ...data) => { window.nanoSerialApi.on_event('*', (eventid, deviceid, ...data) => {
console.log('Event on window ', eventid, deviceid, data) console.log('Event on window ', eventid, deviceid, data)
}) })

View File

@@ -12,7 +12,7 @@ import mockData from '@renderer/data/nanoConfig.json'
// const ajv = new Ajv() // see below // const ajv = new Ajv() // see below
const { nanoDevicesAPI } = window const { nanoSerialApi } = window
// TODO: Define Profile type // TODO: Define Profile type
@@ -216,13 +216,13 @@ export const useStore = defineStore('main', {
// this.selectedProfile.keys[this.selectedKey].default = color // this.selectedProfile.keys[this.selectedKey].default = color
const props = {} const props = {}
props[`button${this.selectedKey.toUpperCase()}Idle`] = color.rgbNumber() props[`button${this.selectedKey.toUpperCase()}Idle`] = color.rgbNumber()
nanoDevicesAPI.send(this.connectedId, { p: { name: 'Default Profile', ...props } }) nanoSerialApi.send(this.connectedId, { p: { name: 'Default Profile', ...props } })
}, },
setKeyPressedColor(color) { setKeyPressedColor(color) {
// this.selectedProfile.keys[this.selectedKey].pressed = color // this.selectedProfile.keys[this.selectedKey].pressed = color
const props = {} const props = {}
props[`button${this.selectedKey.toUpperCase()}Press`] = color.rgbNumber() props[`button${this.selectedKey.toUpperCase()}Press`] = color.rgbNumber()
nanoDevicesAPI.send(this.connectedId, { p: { name: 'Default Profile', ...props } }) nanoSerialApi.send(this.connectedId, { p: { name: 'Default Profile', ...props } })
}, },
// devices, device attachment, connection, and disconnection // devices, device attachment, connection, and disconnection
@@ -233,7 +233,7 @@ export const useStore = defineStore('main', {
// TODO auto-connect to the device // TODO auto-connect to the device
const deviceid = Object.keys(this.devices)[0] const deviceid = Object.keys(this.devices)[0]
console.log('Auto-connecting to device ', deviceid) console.log('Auto-connecting to device ', deviceid)
window.nanoDevicesAPI.connect(deviceid) window.nanoSerialApi.connect(deviceid)
} }
}, },
update_devices(deviceid, attached) { update_devices(deviceid, attached) {
@@ -249,7 +249,7 @@ export const useStore = defineStore('main', {
if (Object.keys(this.devices).length == 1) { if (Object.keys(this.devices).length == 1) {
// TODO auto-connect to the device // TODO auto-connect to the device
console.log('Auto-connecting to device ', deviceid) console.log('Auto-connecting to device ', deviceid)
window.nanoDevicesAPI.connect(deviceid) window.nanoSerialApi.connect(deviceid)
} }
}, },
device_detached(deviceid) { device_detached(deviceid) {
@@ -265,10 +265,10 @@ export const useStore = defineStore('main', {
this.connected = true this.connected = true
this.connectedId = deviceid this.connectedId = deviceid
// TODO load profiles from device // TODO load profiles from device
// nanoDevicesAPI.send(deviceid, { profiles: "#all" }) // request profiles // nanoSerialApi.send(deviceid, { profiles: "#all" }) // request profiles
// "Default Profile", for now, is the only profile after the device // "Default Profile", for now, is the only profile after the device
// starts up, so it is also the current (eg. 'selected') profile // starts up, so it is also the current (eg. 'selected') profile
// nanoDevicesAPI.send(deviceid, { p: "Default Profile" }) // request Default Profile // nanoSerialApi.send(deviceid, { p: "Default Profile" }) // request Default Profile
// TODO maybe you want to request all the profiles right now? // TODO maybe you want to request all the profiles right now?
// or only on demand? // or only on demand?