Skip to content

Commit

Permalink
Further refactor, fix interface keys
Browse files Browse the repository at this point in the history
  • Loading branch information
gozmanyoni committed Dec 28, 2023
1 parent 85266c9 commit c85bcc8
Show file tree
Hide file tree
Showing 53 changed files with 81 additions and 456 deletions.
18 changes: 9 additions & 9 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,13 @@
"immer": "^10.0.3",
"jmuxer": "^2.0.5",
"mui-image": "^1.0.7",
"node-carplay": "github:rhysmorgan134/node-CarPlay",
"node-carplay": "^4.1.0",
"pcm-ringbuf-player": "^0.0.6",
"react-loader-spinner": "^5.4.5",
"react-router-dom": "^6.16.0",
"socket.io": "^4.7.2",
"socket.io-client": "^4.7.2",
"socketmost": "github:rhysmorgan134/socketmost",
"socketmost": "^2.0.17",
"stream-browserify": "^3.0.0",
"usb": "^2.10.0",
"vite-plugin-esmodule": "^1.5.0",
Expand Down
6 changes: 3 additions & 3 deletions src/main/Globals.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Stream } from 'socketmost/dist/src/modules/Messages'
import { messages } from 'socketmost'
import { DongleConfig } from 'node-carplay/node'

export type Most = {
stream?: Stream
stream?: messages.Stream
}

export type ExtraConfig = DongleConfig & {
Expand Down Expand Up @@ -71,4 +71,4 @@ export interface AudioDiskPlayerActions {
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface Subscriptions {}

export type AvailableSources = 'AudioDiskPlayer' | 'AmFmTuner'
export type AvailableSources = 'audioDiskPlayer' | 'amFmTuner'
62 changes: 31 additions & 31 deletions src/main/PiMost.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
import { SocketMost, SocketMostClient } from 'socketmost'
import {
Os8104Events,
MostRxMessage,
SocketMostSendMessage,
Stream
} from 'socketmost/dist/src/modules/Messages'
import { SocketMost, SocketMostClient, messages } from 'socketmost'
import { MessageNames, Socket } from './Socket'
import { AudioDiskPlayer } from './PiMostFunctions/AudioDiskPlayer/AudioDiskPlayer'
import { AmFmTuner } from './PiMostFunctions/AmFm/AmFmTuner'
Expand Down Expand Up @@ -55,7 +49,7 @@ export class PiMost {
}
this.stabilityTimeout = null
this.sourcesInterval = null
this.currentSource = 'AmFmTuner'
this.currentSource = 'amFmTuner'

this.socketMostClient.on('connected', () => {
console.log('client connected')
Expand Down Expand Up @@ -83,16 +77,19 @@ export class PiMost {
socket.on('action', (message: Action) => {
console.log('action request', message)
const { fktID, opType, type, data, method } = message
const opTypeString = opTypes[method][opType]
this.interfaces[type].functions[fktID].actionOpType[opTypeString](data)
const methodGroup = opTypes[method]
const opTypeString = methodGroup[opType as keyof typeof methodGroup]
this.interfaces[type as keyof typeof this.interfaces].functions[fktID].actionOpType[
opTypeString
](data)
})

socket.on('allocate', (source) => {
console.log('received allocate')
this.changeSource(source)
})

this.socketMostClient.on(Os8104Events.Locked, () => {
this.socketMostClient.on(messages.Os8104Events.Locked, () => {
console.log('locked')
if (this.stabilityTimeout) clearTimeout(this.stabilityTimeout)
this.stabilityTimeout = setTimeout(() => {
Expand All @@ -104,7 +101,7 @@ export class PiMost {
}, 3000)
})

this.socketMostClient.on(Os8104Events.Unlocked, () => {
this.socketMostClient.on(messages.Os8104Events.Unlocked, () => {
console.log('UNLOCKED')
if (this.stabilityTimeout) {
clearTimeout(this.stabilityTimeout)
Expand All @@ -114,38 +111,41 @@ export class PiMost {
}
})

this.socketMostClient.on(Os8104Events.SocketMostMessageRxEvent, (message: MostRxMessage) => {
const type = fBlocks[message.fBlockID]
if (message.opType === 15) {
console.log('most error', message)
this.socketMostClient.on(
messages.Os8104Events.SocketMostMessageRxEvent,
(message: messages.MostRxMessage) => {
const type = fBlocks[message.fBlockID as keyof typeof fBlocks]
if (message.opType === 15) {
console.log('most error', message)
}
if (type === this.timeoutType && this.subscriptionTimer!) {
this.subscriptionTimer.refresh()
}
this.interfaces[type as keyof typeof this.interfaces].parseMessage(message)
}
if (type === this.timeoutType && this.subscriptionTimer!) {
this.subscriptionTimer.refresh()
}
this.interfaces[type]?.parseMessage(message)
})
)
})
}

stream(stream: Stream) {
stream(stream: messages.Stream) {
this.socketMostClient.stream(stream)
}

sendMessage = (message: SocketMostSendMessage) => {
sendMessage = (message: messages.SocketMostSendMessage) => {
console.log('send message request', message)
this.socketMostClient.sendControlMessage(message)
}

async subscribeToAll() {
for (const k of Object.keys(this.interfaces)) {
await this.subscribe(k)
await this.subscribe(k as keyof typeof this.interfaces)
}
}

subscribe(interfaceType: string) {
subscribe(interfaceType: keyof typeof this.interfaces) {
// this.socketMostClient.sendControlMessage()
console.log('subscribing to ', interfaceType)
this.interfaces[interfaceType]!.allNotifcations()
this.interfaces[interfaceType].allNotifcations()
return new Promise((resolve) => {
this.timeoutType = interfaceType
this.subscriptionTimer = setTimeout(() => {
Expand All @@ -158,7 +158,7 @@ export class PiMost {

async changeSource(newSource: AvailableSources) {
console.log('new source', newSource)
await this.interfaces.secAmplifier!.functions[0x112].startResult([0x01])
await this.interfaces.secAmplifier.functions[0x112].startResult([0x01])
console.log('deallocate requesting')
await this.disconnectSource()
console.log('waiting for result')
Expand All @@ -179,10 +179,10 @@ export class PiMost {

async disconnectSource() {
console.log('disconnecting')
await this.interfaces[this.currentSource]!.functions[0x102].startResult([0x01])
await this.interfaces[this.currentSource].functions[0x102].startResult([0x01])
}

waitForDealloc(source) {
waitForDealloc(source: AvailableSources) {
return new Promise((resolve) => {
this.interfaces[source].once('deallocResult', (source) => {
console.log(`resolving deallocResult - ${source}`)
Expand All @@ -191,12 +191,12 @@ export class PiMost {
})
}

async allocateSource(source) {
async allocateSource(source: AvailableSources) {
console.log('running allocate')
await this.interfaces[source].functions[0x101].startResult([0x01])
}

waitForAlloc(source): Promise<{ srcDelay: number; channelList: number[] }> {
waitForAlloc(source: AvailableSources): Promise<{ srcDelay: number; channelList: number[] }> {
return new Promise((resolve) => {
this.interfaces[source].once('allocResult', (results) => {
resolve(results)
Expand Down
15 changes: 2 additions & 13 deletions src/main/PiMostFunctions/AmFm/AmFmTuner.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { SocketMostSendMessage } from 'socketmost/dist/src/modules/Messages'
import { messages } from 'socketmost'

import { RadioText } from './RadioText'
import { FBlock } from '../Common/FBlock'
Expand All @@ -11,27 +11,16 @@ import { RadioAutoStore } from './RadioAutoStore'
import { RadioSeek } from './RadioSeek'

export class AmFmTuner extends FBlock {
fBlockID: number
writeMessage: (message: SocketMostSendMessage) => void
instanceID: number
sourceAddrLow: number
sourceAddrHigh: number

constructor(
instanceID: number,
writeMessage: (message: SocketMostSendMessage) => void,
writeMessage: (message: messages.SocketMostSendMessage) => void,
sourceAddrHigh: number,
sourceAddrLow: number,
addressHigh: number,
addressLow: number
) {
super(instanceID, writeMessage, sourceAddrHigh, sourceAddrLow, addressHigh, addressLow)
this.fBlockID = 0x40
this.writeMessage = writeMessage
this.instanceID = instanceID
this.sourceAddrHigh = sourceAddrHigh
this.sourceAddrLow = sourceAddrLow
this.status = {}
this.functions = {
...this.functions,
...{
Expand Down
9 changes: 0 additions & 9 deletions src/main/PiMostFunctions/AmFm/RadioAutoStore.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,6 @@
import { Fkt } from '../Common/Function'
import { FktIdPartMessage } from '../../Globals'

export class RadioAutoStore extends Fkt {
constructor(
fktID: number,
writeMessage: (message: FktIdPartMessage) => void,
updateStatus: (result: object) => void
) {
super(fktID, writeMessage, updateStatus)
}

async status(data: Buffer) {
console.log('AUTO STORE update', data)
const status = { autoStore: false }
Expand Down
8 changes: 0 additions & 8 deletions src/main/PiMostFunctions/AmFm/RadioFreq.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
import { Fkt } from '../Common/Function'
import { FktIdPartMessage } from '../../Globals'

export class RadioFreq extends Fkt {
constructor(
fktID: number,
writeMessage: (message: FktIdPartMessage) => void,
updateStatus: (result: object) => void
) {
super(fktID, writeMessage, updateStatus)
}
async status(data: Buffer) {
const stringEnd = data.indexOf(0x00)
const x = data.readUInt32BE(stringEnd + 2)
Expand Down
8 changes: 0 additions & 8 deletions src/main/PiMostFunctions/AmFm/RadioPreset.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
import { Fkt } from '../Common/Function'
import { FktIdPartMessage } from '../../Globals'

export class RadioPreset extends Fkt {
constructor(
fktID: number,
writeMessage: (message: FktIdPartMessage) => void,
updateStatus: (result: object) => void
) {
super(fktID, writeMessage, updateStatus)
}
async status(data: Buffer) {
console.log('preset update', data)
// let status ={audio: {balance: data.readInt8(0)}}
Expand Down
9 changes: 1 addition & 8 deletions src/main/PiMostFunctions/AmFm/RadioPresetList.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,8 @@
import { Fkt } from '../Common/Function'
import { FktIdPartMessage } from '../../Globals'

import { PresetList } from './AmFmTunerTypes'

export class RadioPresetList extends Fkt {
constructor(
fktID: number,
writeMessage: (message: FktIdPartMessage) => void,
updateStatus: (result: object) => void
) {
super(fktID, writeMessage, updateStatus)
}
async status(data: Buffer) {
const newData = data.subarray(8)
const stringEnd = newData.indexOf(0x00)
Expand Down
8 changes: 0 additions & 8 deletions src/main/PiMostFunctions/AmFm/RadioSeek.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
import { Fkt } from '../Common/Function'
import { FktIdPartMessage } from '../../Globals'

export class RadioSeek extends Fkt {
constructor(
fktID: number,
writeMessage: (message: FktIdPartMessage) => void,
updateStatus: (result: object) => void
) {
super(fktID, writeMessage, updateStatus)
}
async status(data: Buffer) {
console.log('seek update', data)
// let status ={audio: {balance: data.readInt8(0)}}
Expand Down
8 changes: 0 additions & 8 deletions src/main/PiMostFunctions/AmFm/RadioSetPreset.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
import { FktIdPartMessage } from '../../Globals'
import { Fkt } from '../Common/Function'

export class RadioSetPreset extends Fkt {
constructor(
fktID: number,
writeMessage: (message: FktIdPartMessage) => void,
updateStatus: (result: object) => void
) {
super(fktID, writeMessage, updateStatus)
}
async status(data: Buffer) {
console.log('preset update', data)
// let status ={audio: {balance: data.readInt8(0)}}
Expand Down
8 changes: 0 additions & 8 deletions src/main/PiMostFunctions/AmFm/RadioSetPreset2.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
import { FktIdPartMessage } from '../../Globals'
import { Fkt } from '../Common/Function'

export class RadioSetPreset2 extends Fkt {
constructor(
fktID: number,
writeMessage: (message: FktIdPartMessage) => void,
updateStatus: (result: object) => void
) {
super(fktID, writeMessage, updateStatus)
}
async status(data: Buffer) {
console.log('preset update2', data)
}
Expand Down
9 changes: 0 additions & 9 deletions src/main/PiMostFunctions/AmFm/RadioText.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,6 @@
import { FktIdPartMessage } from '../../Globals'
import { Fkt } from '../Common/Function'

export class RadioText extends Fkt {
constructor(
fktID: number,
writeMessage: (message: FktIdPartMessage) => void,
updateStatus: (result: object) => void
) {
super(fktID, writeMessage, updateStatus)
}

async status(data: Buffer) {
const tempString = data.slice(2)
const stringEnd = tempString.indexOf(0x00)
Expand Down
Loading

0 comments on commit c85bcc8

Please sign in to comment.