2022-12-08 05:44:38 +00:00
|
|
|
// the communicator data
|
|
|
|
let communicator_data = {
|
|
|
|
"radio" : {
|
|
|
|
"groupID" : 1.0,
|
|
|
|
"receivedSignal" : 0,
|
|
|
|
}
|
|
|
|
,
|
|
|
|
"mode" : {
|
|
|
|
"changeChannelMode" : false,
|
|
|
|
}
|
|
|
|
,
|
|
|
|
"received" : {
|
|
|
|
"ID" : 0,
|
|
|
|
}
|
|
|
|
,
|
|
|
|
}
|
2022-12-08 05:00:51 +00:00
|
|
|
|
2022-12-08 05:44:38 +00:00
|
|
|
// sound effects
|
|
|
|
let communicator_sounds = {
|
|
|
|
"beep" : {
|
|
|
|
"tone" : Note.C5,
|
|
|
|
"speed" : music.beat(BeatFraction.Eighth),
|
|
|
|
}
|
|
|
|
,
|
|
|
|
"call" : {
|
|
|
|
"tone" : Note.G,
|
|
|
|
}
|
|
|
|
,
|
|
|
|
}
|
|
|
|
|
|
|
|
function changeChannelMode(adjustIncrement: number = 0) {
|
|
|
|
let device_groupID: string;
|
|
|
|
let device_channelNumber: number;
|
|
|
|
/**
|
|
|
|
changeChannelMode allows the changing of radio channels.
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
adjustIncrement: (integer) how much to adjust
|
|
|
|
Returns:
|
|
|
|
groupID: (integer) the current channel ID
|
|
|
|
|
|
|
|
*/
|
|
|
|
// Enable the change channel and ID mode.
|
|
|
|
communicator_data["mode"]["changeChannelMode"] = true
|
|
|
|
// The groupID variable includes the channel number (integer) and the device's identifier (non-integer).
|
|
|
|
if (adjustIncrement) {
|
|
|
|
if (adjustIncrement >= 1) {
|
|
|
|
// Increase the selected ID number!
|
|
|
|
communicator_data["radio"]["groupID"] += 0.1
|
|
|
|
} else if (adjustIncrement <= -1 && communicator_data["radio"]["groupID"] > 1) {
|
|
|
|
// Decrease the selected ID number!
|
|
|
|
communicator_data["radio"]["groupID"] = communicator_data["radio"]["groupID"] - 0.1
|
|
|
|
}
|
|
|
|
|
|
|
|
// Get device channel only.
|
|
|
|
device_groupID = "" + communicator_data["radio"]["groupID"]
|
|
|
|
device_channelNumber = parseInt(_py.py_string_split(device_groupID, ".")[0])
|
|
|
|
// Set the group number properly.
|
|
|
|
radio.setGroup(device_channelNumber)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Stop the animation and show the number.
|
|
|
|
led.stopAnimation()
|
|
|
|
basic.showNumber(communicator_data["radio"]["groupID"])
|
|
|
|
}
|
|
|
|
|
|
|
|
function message_send() {
|
|
|
|
/**
|
|
|
|
Send the message.
|
|
|
|
|
|
|
|
Parameters: none
|
|
|
|
Returns: none
|
|
|
|
|
|
|
|
*/
|
|
|
|
// Convert
|
|
|
|
let device_groupID = "" + communicator_data["radio"]["groupID"]
|
|
|
|
// Get the device number only.
|
|
|
|
let device_number = parseInt(_py.py_string_split(device_groupID, ".")[1])
|
|
|
|
// Broadcast the message.
|
|
|
|
radio.sendNumber(device_number)
|
|
|
|
}
|
|
|
|
|
|
|
|
function message_receive() {
|
|
|
|
/**
|
|
|
|
Display the received message.
|
|
|
|
|
|
|
|
Parameters: none
|
|
|
|
Returns: none
|
|
|
|
|
|
|
|
*/
|
|
|
|
// Get the device number only.
|
|
|
|
let device_receive_number = communicator_data["received"]["ID"]
|
|
|
|
// Display the device number.
|
|
|
|
basic.showNumber(device_receive_number)
|
|
|
|
// Ring.
|
|
|
|
music.ringTone(communicator_sounds["call"]["tone"])
|
|
|
|
// Pause.
|
|
|
|
basic.pause(5000)
|
|
|
|
// Stop.
|
|
|
|
basic.clearScreen()
|
|
|
|
music.stopAllSounds()
|
|
|
|
}
|
|
|
|
|
|
|
|
input.onButtonPressed(Button.AB, function on_button_pressed_ab() {
|
|
|
|
// Play the button clicked sound.
|
|
|
|
music.playTone(communicator_sounds["beep"]["tone"], communicator_sounds["beep"]["speed"])
|
|
|
|
// Stop the animation.
|
|
|
|
led.stopAnimation()
|
|
|
|
// allow the toggling of channel changing
|
|
|
|
if (!communicator_data["mode"]["changeChannelMode"]) {
|
|
|
|
changeChannelMode()
|
|
|
|
} else {
|
|
|
|
communicator_data["mode"]["changeChannelMode"] = false
|
|
|
|
basic.clearScreen()
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
input.onButtonPressed(Button.A, function on_button_pressed_a() {
|
|
|
|
// Play the button clicked sound.
|
|
|
|
music.playTone(communicator_sounds["beep"]["tone"], communicator_sounds["beep"]["speed"])
|
|
|
|
// Stop the animation.
|
|
|
|
led.stopAnimation()
|
|
|
|
if (communicator_data["mode"]["changeChannelMode"]) {
|
|
|
|
changeChannelMode(-1)
|
|
|
|
} else {
|
|
|
|
// A button is mapped to short sounds.
|
|
|
|
message_send()
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
input.onButtonPressed(Button.B, function on_button_pressed_b() {
|
|
|
|
// Play the button clicked sound.
|
|
|
|
music.playTone(communicator_sounds["beep"]["tone"], communicator_sounds["beep"]["speed"])
|
|
|
|
// Stop the animation.
|
|
|
|
led.stopAnimation()
|
|
|
|
if (communicator_data["mode"]["changeChannelMode"]) {
|
|
|
|
changeChannelMode(1)
|
|
|
|
} else {
|
|
|
|
// B button is mapped to the longer sound
|
|
|
|
message_send()
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
radio.onReceivedNumber(function on_received_number(receivedNumber: number) {
|
|
|
|
communicator_data["received"]["ID"] = receivedNumber
|
|
|
|
message_receive()
|
|
|
|
})
|