Drop name from clients, only leave the role

fixes #31
This commit is contained in:
Michal Moskal 2021-02-09 18:56:59 -08:00
Родитель 813dcb7de1
Коммит 8843f081c3
39 изменённых файлов: 98 добавлений и 97 удалений

Просмотреть файл

@ -1,8 +1,8 @@
namespace modules {
//% fixedInstances
export class AccelerometerClient extends jacdac.BufferedSensorClient<number[]> {
constructor(requiredDevice: string = null) {
super("acc", jacdac.SRV_ACCELEROMETER, requiredDevice);
constructor(requiredDevice: string) {
super(jacdac.SRV_ACCELEROMETER, requiredDevice);
}
protected parseSample(packet: jacdac.JDPacket) {
@ -80,5 +80,5 @@ namespace modules {
}
//% fixedInstance whenUsed
export const accelerometer = new AccelerometerClient();
export const accelerometer = new AccelerometerClient("acc");
}

Просмотреть файл

@ -29,8 +29,8 @@ namespace jacdac {
export class ActuatorClient extends Client {
protected state: Buffer;
constructor(name: string, deviceClass: number, stateLength: number, requiredDevice: string) {
super(name, deviceClass, requiredDevice);
constructor(deviceClass: number, stateLength: number, requiredDevice: string) {
super(deviceClass, requiredDevice);
this.state = Buffer.create(stateLength);
// TODO
// this.onDriverEvent(JDDriverEvent.Connected, () => this.notifyChange());

Просмотреть файл

@ -4,8 +4,8 @@ namespace modules {
//% fixedInstances
export class ButtonClient extends jacdac.SensorClient {
constructor(requiredDevice: string = null) {
super("btn", jacdac.SRV_BUTTON, requiredDevice);
constructor(requiredDevice: string) {
super(jacdac.SRV_BUTTON, requiredDevice);
}
connectControllerButton(controllerButton: number) {
@ -40,5 +40,5 @@ namespace modules {
}
//% fixedInstance whenUsed
export const button = new ButtonClient();
export const button = new ButtonClient("btn");
}

Просмотреть файл

@ -62,8 +62,8 @@ namespace modules {
//% fixedInstances
export class BuzzerClient extends jacdac.Client {
constructor(requiredDevice: string = null) {
super("mus", jacdac.SRV_BUZZER, requiredDevice);
constructor(requiredDevice: string) {
super(jacdac.SRV_BUZZER, requiredDevice);
}
private player: JDMelodyPlayer
@ -90,5 +90,5 @@ namespace modules {
}
//% fixedInstance whenUsed
export const buzzer = new BuzzerClient();
export const buzzer = new BuzzerClient("buzzer");
}

Просмотреть файл

@ -20,7 +20,7 @@ namespace jacdac {
controlData: Buffer
constructor() {
super("ctrl", jd_class.CONTROLLER);
super("controller", jd_class.CONTROLLER);
this.controlData = Buffer.create(3)
this.controlData[0] = JDControllerCommand.ControlClient;
this.serverAddress = 0;

Просмотреть файл

@ -6,7 +6,7 @@ namespace jacdac {
players: string[];
constructor() {
super("ctrl", jd_class.CONTROLLER);
super("controller", jd_class.CONTROLLER);
this.players = [];
this.promptedServers = [];
this.prompting = false;

Просмотреть файл

@ -4,8 +4,8 @@ namespace jacdac {
//% fixedInstances
export class ArcadeControlsClient extends Client {
constructor(requiredDevice: string = null) {
super("apad", SRV_GAMEPAD, requiredDevice);
constructor(requiredDevice: string) {
super(SRV_GAMEPAD, requiredDevice);
}
handlePacket(pkt: JDPacket) {
@ -23,5 +23,5 @@ namespace jacdac {
}
//% fixedInstance whenUsed
export const arcadeControls = new ArcadeControlsClient();
export const arcadeControls = new ArcadeControlsClient("arcadepad");
}

Просмотреть файл

@ -1,7 +1,7 @@
namespace jacdac {
//% fixedInstances
export class ColorSensorClient extends SensorClient {
constructor(requiredDevice: string = null) {
constructor(requiredDevice: string) {
super("cols", jd_class.COLOR_SENSOR, requiredDevice);
}

Просмотреть файл

@ -58,7 +58,7 @@ namespace jacdac {
//% fixedInstances
export class GamepadClient extends Client {
constructor(requiredDevice: string = null) {
constructor(requiredDevice: string) {
super("gpad", jd_class.GAMEPAD, requiredDevice);
}

Просмотреть файл

@ -101,7 +101,7 @@ enum JDKeyboardKeyEvent {
namespace jacdac {
//% fixedInstances
export class KeyboardClient extends Client {
constructor(requiredDevice: string = null) {
constructor(requiredDevice: string) {
super("keyb", SRV_KEYBOARD, requiredDevice);
}

Просмотреть файл

@ -8,7 +8,7 @@ namespace jacdac {
//% fixedInstances
export class LCDClient extends ActuatorClient {
constructor(requiredDevice: string = null) {
constructor(requiredDevice: string) {
super("lcd", jd_class.LCD, 17, requiredDevice);
this.setDisplay(true);
}

Просмотреть файл

@ -8,7 +8,7 @@ namespace jacdac {
//% fixedInstances
export class LightSensorClient extends SensorClient {
constructor(requiredDevice: string = null) {
constructor(requiredDevice: string) {
super("lis", jd_class.LIGHT_SENSOR, requiredDevice);
}

Просмотреть файл

@ -15,7 +15,7 @@ namespace jacdac {
}
//% fixedInstances
export class LightSpectrumSensorClient extends SensorClient {
constructor(requiredDevice: string = null) {
constructor(requiredDevice: string) {
super("lspec", jd_class.LIGHT_SPECTRUM_SENSOR, requiredDevice);
}

Просмотреть файл

@ -10,7 +10,7 @@ const enum JDMouseButton {
namespace jacdac {
//% fixedInstances
export class MouseClient extends Client {
constructor(requiredDevice: string = null) {
constructor(requiredDevice: string) {
super("mous", SRV_MOUSE, requiredDevice);
}

Просмотреть файл

@ -1,7 +1,7 @@
namespace jacdac {
//% fixedInstances
export class PixelClient extends ActuatorClient {
constructor(requiredDevice: string = null) {
constructor(requiredDevice: string) {
super("pixel", jd_class.PIXEL, 4, requiredDevice);
}

Просмотреть файл

@ -6,7 +6,7 @@ namespace jacdac {
//% fixedInstances
export class ProximityClient extends SensorClient {
constructor(requiredDevice: string = null) {
constructor(requiredDevice: string) {
super("proxi", jd_class.PROXIMITY, requiredDevice);
}

Просмотреть файл

@ -1,7 +1,7 @@
namespace jacdac {
//% fixedInstances
export class RGBLEDClient extends Client {
constructor(requiredDevice: string = null) {
constructor(requiredDevice: string) {
super("RGBLED", jd_class.RGB_LED, requiredDevice);
}

Просмотреть файл

@ -1,7 +1,7 @@
namespace jacdac {
//% fixedInstances
export class SwitchClient extends SensorClient {
constructor(requiredDevice: string = null) {
constructor(requiredDevice: string) {
super("switch", SRV_SWITCH, requiredDevice);
}

Просмотреть файл

@ -1,7 +1,7 @@
namespace jacdac {
//% fixedInstances
export class TouchButtonClient extends SensorClient {
constructor(requiredDevice: string = null) {
constructor(requiredDevice: string) {
super("touch", jd_class.TOUCHBUTTON, requiredDevice);
}
@ -35,7 +35,7 @@ namespace jacdac {
* A client of multiple buttons
*/
export class TouchButtonsClient extends SensorClient {
constructor(requiredDevice: string = null) {
constructor(requiredDevice: string) {
super("mtouch", jd_class.TOUCH_BUTTONS, requiredDevice);
}

Просмотреть файл

@ -2,8 +2,8 @@ namespace modules {
//% fixedInstances
//% blockGap=8
export class LightClient extends jacdac.Client {
constructor(requiredDevice: string = null) {
super("light", jacdac.SRV_LIGHT, requiredDevice);
constructor(requiredDevice: string) {
super(jacdac.SRV_LIGHT, requiredDevice);
}
_length = 10
@ -358,5 +358,5 @@ namespace modules {
}
//% fixedInstance whenUsed
export const light = new LightClient();
export const light = new LightClient("rgb_pixels");
}

Просмотреть файл

@ -5,7 +5,7 @@ namespace jacdac {
onMessageReceived: (priority: number, dev: Device, message: string) => void;
constructor() {
super("conc", SRV_LOGGER, null);
super(SRV_LOGGER, "logger");
this.broadcast = true
onAnnounce(() => {
// on every announce, if we're listening to anything, tell

Просмотреть файл

@ -2,8 +2,8 @@ namespace modules {
//% fixedInstances
//% blockGap=8
export class MicrophoneClient extends jacdac.SensorClient {
constructor(requiredDevice: string = null) {
super("mic", jacdac.SRV_MICROPHONE, requiredDevice);
constructor(requiredDevice: string) {
super(jacdac.SRV_MICROPHONE, requiredDevice);
}
/**
@ -19,5 +19,5 @@ namespace modules {
}
//% fixedInstance whenUsed
export const microphone = new MicrophoneClient();
export const microphone = new MicrophoneClient("mic");
}

6
mk.sh Executable file
Просмотреть файл

@ -0,0 +1,6 @@
#!/bin/sh
set -e
makecode -u -j --mono-repo -c mkc.json
makecode -u -j --mono-repo -c mkc-microbit.json
makecode -u -j --mono-repo -c mkc-arcade.json

Просмотреть файл

@ -10,8 +10,8 @@ namespace jacdac {
//% fixedInstances
//% blockGap=8
export class ModelRunnerClient extends Client {
constructor(requiredDevice: string = null) {
super("mrun", SRV_MODEL_RUNNER, requiredDevice);
constructor(requiredDevice: string) {
super(SRV_MODEL_RUNNER, requiredDevice);
}
private _autoInv: number
@ -60,5 +60,5 @@ namespace jacdac {
* Default model runner
*/
//% fixedInstance
export const modelRunner = new ModelRunnerClient();
export const modelRunner = new ModelRunnerClient("model_runner");
}

Просмотреть файл

@ -19,8 +19,8 @@ namespace modules {
//% fixedInstances
//% blockGap=8
export class MonoLightClient extends jacdac.Client {
constructor(requiredDevice: string = null) {
super("monol", jacdac.SRV_MONO_LIGHT, requiredDevice);
constructor(requiredDevice: string) {
super(jacdac.SRV_MONO_LIGHT, requiredDevice);
}
// set to negative for infinity
@ -63,5 +63,5 @@ namespace modules {
}
//% fixedInstance whenUsed
export const monoLight = new MonoLightClient();
export const monoLight = new MonoLightClient("mono_light");
}

Просмотреть файл

@ -1,8 +1,8 @@
namespace modules {
//% fixedInstances
export class MotorClient extends jacdac.Client {
constructor(requiredDevice: string = null) {
super("motor", jacdac.SRV_MOTOR, requiredDevice);
constructor(requiredDevice: string) {
super(jacdac.SRV_MOTOR, requiredDevice);
}
/**
@ -27,5 +27,5 @@ namespace modules {
}
//% fixedInstance whenUsed
export const motor = new MotorClient();
export const motor = new MotorClient("motor");
}

Просмотреть файл

@ -5,8 +5,8 @@ namespace modules {
//% fixedInstances
//% blockGap=8
export class MultiTouchClient extends jacdac.SensorClient {
constructor(requiredDevice: string = null) {
super("multitouch", jacdac.SRV_MULTITOUCH, requiredDevice);
constructor(requiredDevice: string) {
super(jacdac.SRV_MULTITOUCH, requiredDevice);
}
/**
@ -33,5 +33,5 @@ namespace modules {
}
//% fixedInstance whenUsed
export const multiTouch = new MultiTouchClient();
export const multiTouch = new MultiTouchClient("multitouch");
}

Просмотреть файл

@ -175,7 +175,7 @@ namespace jacdac._rolemgr {
function packName(c: Client) {
const devid = c.device ? Buffer.fromHex(c.device.deviceId) : Buffer.create(8)
const servidx = c.device ? c.serviceIndex : 0
return jdpack("b[8] u32 u8 s", [devid, c.serviceClass, servidx, c.requiredDeviceName || ""])
return jdpack("b[8] u32 u8 s", [devid, c.serviceClass, servidx, c.requiredDeviceName])
}
}
@ -278,7 +278,7 @@ namespace jacdac {
export class RoleManagerClient extends Client {
public remoteRequestedDevices: RoleBinding[] = []
constructor(requiredDevice: string = null) {
constructor(requiredDevice: string) {
super("rolemgrc", SRV_ROLE_MANAGER, requiredDevice)
onNewDevice(() => {

Просмотреть файл

@ -2,8 +2,8 @@ namespace modules {
//% fixedInstances
//% blockGap=8
export class RotaryEncoderClient extends jacdac.SensorClient {
constructor(requiredDevice: string = null) {
super("crank", jacdac.SRV_ROTARY_ENCODER, requiredDevice);
constructor(requiredDevice: string) {
super(jacdac.SRV_ROTARY_ENCODER, requiredDevice);
}
scale = 1
@ -47,5 +47,5 @@ namespace modules {
* Default rotary encoder
*/
//% fixedInstance whenUsed
export const rotaryEncoder = new RotaryEncoderClient();
export const rotaryEncoder = new RotaryEncoderClient("rotary_encoder");
}

Просмотреть файл

@ -288,16 +288,13 @@ namespace jacdac {
protected readonly config: ClientPacketQueue
constructor(
public name: string,
public readonly serviceClass: number,
public requiredDeviceName: string
) {
this.eventId = control.allocateNotifyEvent();
this.config = new ClientPacketQueue(this)
if (!this.name)
throw "no name"
if (!this.requiredDeviceName)
this.requiredDeviceName = this.name
throw "no role"
}
broadcastDevices() {
@ -337,7 +334,7 @@ namespace jacdac {
this.serviceIndex = serviceNum
_unattachedClients.removeElement(this)
}
log(`attached ${dev.toString()}/${serviceNum} to client ${this.name}`)
log(`attached ${dev.toString()}/${serviceNum} to client ${this.requiredDeviceName}`)
dev.clients.push(this)
this.onAttach()
this.config.resend()
@ -345,7 +342,7 @@ namespace jacdac {
}
_detach() {
log(`dettached ${this.name}`)
log(`dettached ${this.requiredDeviceName}`)
this.serviceIndex = null
if (!this.broadcast) {
if (!this.device) throw "Invalid detach"
@ -412,7 +409,7 @@ namespace jacdac {
return
let dev = selfDevice().toString()
let other = this.device ? this.device.toString() : "<unbound>"
console.add(consolePriority, `${dev}/${other}:${this.serviceClass}>${this.name}>${text}`);
console.add(consolePriority, `${dev}/${other}:${this.serviceClass}>${this.requiredDeviceName}>${text}`);
}
start() {

Просмотреть файл

@ -43,7 +43,7 @@ namespace jacdac {
constructor(parent: SensorAggregatorHost, config: Buffer) {
const [devIdBuf, serviceClass, serviceNum, sampleSize, sampleType, sampleShift] = jdunpack(config, "b[8] u32 u8 u8 u8 i8")
const devId = devIdBuf.getNumber(NumberFormat.Int32LE, 0) == 0 ? null : devIdBuf.toHex()
super("aggcoll", serviceClass, devId)
super(serviceClass, devId + ":" + serviceNum)
this.requiredServiceNum = serviceNum
this.sampleType = sampleType

Просмотреть файл

@ -9,8 +9,8 @@ namespace jacdac {
public isStreaming = false
constructor(name: string, deviceClass: number, requiredDevice: string) {
super(name, deviceClass, requiredDevice);
constructor(deviceClass: number, requiredDevice: string) {
super(deviceClass, requiredDevice);
this._lastState = control.createBuffer(0);
}
@ -84,8 +84,8 @@ namespace jacdac {
protected _interval: number
protected _lastTimestamp: number
constructor(name: string, deviceClass: number, requiredDevice: string) {
super(name, deviceClass, requiredDevice);
constructor(deviceClass: number, requiredDevice: string) {
super(deviceClass, requiredDevice);
}
enableBuffer(numSamples: number, interval: number) {

Просмотреть файл

@ -1,8 +1,8 @@
namespace jacdac {
export class BroadcastClient extends Client {
// workaround for https://github.com/microsoft/pxt-arcade/issues/1831
constructor(public readonly parent: Broadcast) {
super(parent.name, parent.serviceClass, null)
constructor(public readonly parent: Broadcast, role: string) {
super(parent.serviceClass, role)
this.broadcast = true
}
@ -16,13 +16,11 @@ namespace jacdac {
constructor(name: string, serviceClass: number) {
super(name, serviceClass)
this.client = new BroadcastClient(this)
this.client = new BroadcastClient(this, name)
}
handlePacketOuter(pkt: JDPacket) {
// do nothing; we're not expecting any packets addressed directly to us
}
}
}

Просмотреть файл

@ -2,8 +2,8 @@ namespace modules {
//% fixedInstances
//% blockGap=8
export class ServoClient extends jacdac.Client {
constructor(requiredDevice: string = null) {
super("servo", jacdac.SRV_SERVO, requiredDevice);
constructor(requiredDevice: string) {
super(jacdac.SRV_SERVO, requiredDevice);
}
private pulse: number
@ -92,5 +92,5 @@ namespace modules {
}
//% fixedInstance whenUsed
export const servo = new ServoClient();
export const servo = new ServoClient("servo");
}

Просмотреть файл

@ -2,8 +2,8 @@ namespace modules {
//% fixedInstances
//% blockGap=8
export class SliderClient extends jacdac.SensorClient {
constructor(requiredDevice: string = null) {
super("slider", jacdac.SRV_SLIDER, requiredDevice);
constructor(requiredDevice: string) {
super(jacdac.SRV_SLIDER, requiredDevice);
}
/**
@ -26,5 +26,5 @@ namespace modules {
* Default slider
*/
//% fixedInstance whenUsed
export const slider = new SliderClient();
export const slider = new SliderClient("slider");
}

Просмотреть файл

@ -49,8 +49,8 @@ namespace jacdac {
export class TcpClient extends Client {
_retPort: number = null
constructor(requiredDevice: string = null) {
super("tcp", SRV_TCP, requiredDevice);
constructor(requiredDevice: string) {
super(SRV_TCP, requiredDevice);
}
handlePacket(pkt: JDPacket) {

24
test.ts
Просмотреть файл

@ -33,7 +33,7 @@ function jdpackTest() {
testOne("u16 u16[]", [42, []])
testOne("u16 z[]", [42, ["foo", "bar", "bz"]])
}
// pins.A9.digitalWrite(false)
jacdac.consolePriority = ConsolePriority.Log;
@ -43,19 +43,19 @@ jacdac.start()
jacdac.loggerHost.log("test started")
//jdpackTest()
function addClient(cls:number,name:string) {
function addClient(cls: number, name: string) {
console.log(`client: ${name} (${cls})`)
new jacdac.Client(name,cls,name).start()
new jacdac.Client(cls, name).start()
}
addClient(0x1f140409, "left_leg/acc1" )
addClient(0x1473a263, "btn1" )
addClient(0x16c810b8, "small/hum" )
addClient(0x1421bac7, "small/temp" )
addClient(0x169c9dc6, "big/eco2" )
addClient(0x16c810b8, "big/hum" )
addClient(0x1421bac7, "big/temp" )
addClient(0x16c810b8, "xsmall/hum" )
addClient(0x1421bac7, "xsmall/temp" )
addClient(0x1f140409, "left_leg/acc1")
addClient(0x1473a263, "btn1")
addClient(0x16c810b8, "small/hum")
addClient(0x1421bac7, "small/temp")
addClient(0x169c9dc6, "big/eco2")
addClient(0x16c810b8, "big/hum")
addClient(0x1421bac7, "big/temp")
addClient(0x16c810b8, "xsmall/hum")
addClient(0x1421bac7, "xsmall/temp")
jacdac._rolemgr.clearRoles()

Просмотреть файл

@ -15,8 +15,8 @@ const enum TemperatureUnit {
namespace modules {
//% fixedInstances
export class ThermometerClient extends jacdac.SensorClient {
constructor(requiredDevice: string = null) {
super("temp", jacdac.SRV_THERMOMETER, requiredDevice);
constructor(requiredDevice: string) {
super(jacdac.SRV_THERMOMETER, requiredDevice);
}
/**
@ -48,5 +48,5 @@ namespace modules {
}
//% fixedInstance whenUsed
export const thermometer = new ThermometerClient();
export const thermometer = new ThermometerClient("temp");
}

Просмотреть файл

@ -18,8 +18,8 @@ namespace jacdac {
}
export class WifiClient extends Client {
constructor(requiredDevice: string = null) {
super("wifi", SRV_WIFI, requiredDevice);
constructor(requiredDevice: string) {
super(SRV_WIFI, requiredDevice);
}
get hasIP() {
@ -58,9 +58,9 @@ namespace jacdac {
if (this.wifiClient)
return
this.wifiClient = new WifiClient()
this.wifiClient = new WifiClient("wifi")
this.wifiClient.start()
this.tcpClient = new TcpClient()
this.tcpClient = new TcpClient("tcp")
this.tcpClient.start()
}