* rename "microbit" package to "core" #414 * shouldn't edit the package id. * updating package.json * updated the wrong version * missed updating pxt.json of tests
This commit is contained in:
committed by
Peli de Halleux
parent
80131f2928
commit
277d5a721c
217
libs/devices/devices.cpp
Normal file
217
libs/devices/devices.cpp
Normal file
@ -0,0 +1,217 @@
|
||||
#include "pxt.h"
|
||||
#include "MESEvents.h"
|
||||
|
||||
using namespace pxt;
|
||||
|
||||
enum class MesCameraEvent {
|
||||
//% block="take photo"
|
||||
TakePhoto = MES_CAMERA_EVT_TAKE_PHOTO,
|
||||
//% block="start video capture"
|
||||
StartVideoCapture = MES_CAMERA_EVT_START_VIDEO_CAPTURE,
|
||||
//% block="stop video capture"
|
||||
StopVideoCapture = MES_CAMERA_EVT_STOP_VIDEO_CAPTURE,
|
||||
//% block="toggle front-rear"
|
||||
ToggleFrontRear = MES_CAMERA_EVT_TOGGLE_FRONT_REAR,
|
||||
//% block="launch photo mode"
|
||||
LaunchPhotoMode = MES_CAMERA_EVT_LAUNCH_PHOTO_MODE,
|
||||
//% block="launch video mode"
|
||||
LaunchVideoMode = MES_CAMERA_EVT_LAUNCH_VIDEO_MODE,
|
||||
//% block="stop photo mode"
|
||||
StopPhotoMode = MES_CAMERA_EVT_STOP_PHOTO_MODE,
|
||||
//% block="stop video mode"
|
||||
StopVideoMode = MES_CAMERA_EVT_STOP_VIDEO_MODE,
|
||||
};
|
||||
|
||||
enum class MesAlertEvent {
|
||||
//% block="display toast"
|
||||
DisplayToast = MES_ALERT_EVT_DISPLAY_TOAST,
|
||||
//% block="vibrate"
|
||||
Vibrate = MES_ALERT_EVT_VIBRATE,
|
||||
//% block="play sound"
|
||||
PlaySound = MES_ALERT_EVT_PLAY_SOUND,
|
||||
//% block="play ring tone"
|
||||
PlayRingtone = MES_ALERT_EVT_PLAY_RINGTONE,
|
||||
//% block="find my phone"
|
||||
FindMyPhone = MES_ALERT_EVT_FIND_MY_PHONE,
|
||||
//% block="ring alarm"
|
||||
RingAlarm = MES_ALERT_EVT_ALARM1,
|
||||
//% block="ring alarm 2"
|
||||
RingAlarm2 = MES_ALERT_EVT_ALARM2,
|
||||
//% block="ring alarm 3"
|
||||
RingAlarm3 = MES_ALERT_EVT_ALARM3,
|
||||
//% block="ring alarm 4"
|
||||
RingAlarm4 = MES_ALERT_EVT_ALARM4,
|
||||
//% block="ring alarm 5"
|
||||
RingAlarm5 = MES_ALERT_EVT_ALARM5,
|
||||
//% block="ring alarm 6"
|
||||
RingAlarm6 = MES_ALERT_EVT_ALARM6,
|
||||
};
|
||||
|
||||
enum class MesDeviceInfo {
|
||||
//% block="incoming call"
|
||||
IncomingCall = MES_DEVICE_INCOMING_CALL,
|
||||
//% block="incoming message"
|
||||
IncomingMessage = MES_DEVICE_INCOMING_MESSAGE,
|
||||
//% block="orientation landscape"
|
||||
OrientationLandscape = MES_DEVICE_ORIENTATION_LANDSCAPE,
|
||||
//% block="orientation portrait"
|
||||
OrientationPortrait = MES_DEVICE_ORIENTATION_PORTRAIT,
|
||||
//% block="shaken"
|
||||
Shaken = MES_DEVICE_GESTURE_DEVICE_SHAKEN,
|
||||
//% block="display off"
|
||||
DisplayOff = MES_DEVICE_DISPLAY_OFF,
|
||||
//% block="display on"
|
||||
DisplayOn = MES_DEVICE_DISPLAY_ON,
|
||||
};
|
||||
|
||||
enum class MesRemoteControlEvent {
|
||||
//% block="play"
|
||||
play = MES_REMOTE_CONTROL_EVT_PLAY,
|
||||
//% block="pause"
|
||||
pause = MES_REMOTE_CONTROL_EVT_PAUSE,
|
||||
//% block="stop"
|
||||
stop = MES_REMOTE_CONTROL_EVT_STOP,
|
||||
//% block="next track"
|
||||
nextTrack = MES_REMOTE_CONTROL_EVT_NEXTTRACK,
|
||||
//% block="previous track"
|
||||
previousTrack = MES_REMOTE_CONTROL_EVT_PREVTRACK,
|
||||
//% block="forward"
|
||||
forward = MES_REMOTE_CONTROL_EVT_FORWARD,
|
||||
//% block="rewind"
|
||||
rewind = MES_REMOTE_CONTROL_EVT_REWIND,
|
||||
//% block="volume up"
|
||||
volumeUp = MES_REMOTE_CONTROL_EVT_VOLUMEUP,
|
||||
//% block="volume down"
|
||||
volumeDown = MES_REMOTE_CONTROL_EVT_VOLUMEDOWN,
|
||||
};
|
||||
|
||||
enum class MesDpadButtonInfo {
|
||||
//% block="A down"
|
||||
ADown = MES_DPAD_BUTTON_A_DOWN,
|
||||
//% block="A up"
|
||||
AUp = MES_DPAD_BUTTON_A_UP,
|
||||
//% block="B down"
|
||||
BDown = MES_DPAD_BUTTON_B_DOWN,
|
||||
//% block="B up"
|
||||
BUp = MES_DPAD_BUTTON_B_UP,
|
||||
//% block="C down"
|
||||
CDown = MES_DPAD_BUTTON_C_DOWN,
|
||||
//% block="C up"
|
||||
CUp = MES_DPAD_BUTTON_C_UP,
|
||||
//% block="D down"
|
||||
DDown = MES_DPAD_BUTTON_D_DOWN,
|
||||
//% block="D up"
|
||||
DUp = MES_DPAD_BUTTON_D_UP,
|
||||
//% block="1 down"
|
||||
_1Down = MES_DPAD_BUTTON_1_UP,
|
||||
//% block="1 up"
|
||||
_1Up = MES_DPAD_BUTTON_1_DOWN,
|
||||
//% block="2 down"
|
||||
_2Down = MES_DPAD_BUTTON_2_DOWN,
|
||||
//% block="2 up"
|
||||
_2Up = MES_DPAD_BUTTON_2_UP,
|
||||
//% block="3 down"
|
||||
_3Down = MES_DPAD_BUTTON_3_DOWN,
|
||||
//% block="3 up"
|
||||
_3Up = MES_DPAD_BUTTON_3_UP,
|
||||
//% block="4 down"
|
||||
_4Down = MES_DPAD_BUTTON_4_DOWN,
|
||||
//% block="4 up"
|
||||
_4Up = MES_DPAD_BUTTON_4_UP,
|
||||
};
|
||||
|
||||
/**
|
||||
* Control a phone with the BBC micro:bit via Bluetooth.
|
||||
*/
|
||||
//% color=156 weight=80
|
||||
namespace devices {
|
||||
static void genEvent(int id, int event) {
|
||||
MicroBitEvent e(id, event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a ``camera`` command to the parent device.
|
||||
* @param event event description
|
||||
*/
|
||||
//% weight=30 help=devices/tell-camera-to
|
||||
//% blockId=devices_camera icon="\uf030" block="tell camera to|%property" blockGap=8
|
||||
void tellCameraTo(MesCameraEvent event) {
|
||||
genEvent(MES_CAMERA_ID, (int)event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a ``remote control`` command to the parent device.
|
||||
* @param event event description
|
||||
*/
|
||||
//% weight=29 help=devices/tell-remote-control-to
|
||||
//% blockId=devices_remote_control block="tell remote control to|%property" blockGap=14 icon="\uf144"
|
||||
void tellRemoteControlTo(MesRemoteControlEvent event) {
|
||||
genEvent(MES_REMOTE_CONTROL_ID, (int)event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends an ``alert`` command to the parent device.
|
||||
* @param event event description
|
||||
*/
|
||||
//% weight=27 help=devices/raise-alert-to
|
||||
//% blockId=devices_alert block="raise alert to|%property" icon="\uf0f3"
|
||||
void raiseAlertTo(MesAlertEvent event) {
|
||||
genEvent(MES_ALERTS_ID, (int)event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers code to run when the device notifies about a particular event.
|
||||
* @param event event description
|
||||
* @param body code handler when event is triggered
|
||||
*/
|
||||
//% help=devices/on-notified weight=26
|
||||
//% blockId=devices_device_info_event block="on notified|%event" icon="\uf10a"
|
||||
void onNotified(MesDeviceInfo event, Action body) {
|
||||
registerWithDal(MES_DEVICE_INFO_ID, (int)event, body);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register code to run when the micro:bit receives a command from the paired gamepad.
|
||||
* @param name button name
|
||||
* @param body code to run when button is pressed
|
||||
*/
|
||||
//% help=devices/on-gamepad-button weight=40
|
||||
//% weight=25
|
||||
//% blockId=devices_gamepad_event block="on gamepad button|%NAME" icon="\uf11b"
|
||||
void onGamepadButton(MesDpadButtonInfo name, Action body) {
|
||||
registerWithDal(MES_DPAD_CONTROLLER_ID, (int)name, body);
|
||||
}
|
||||
|
||||
static int _signalStrength = -1;
|
||||
static void signalStrengthHandler(MicroBitEvent ev) {
|
||||
// keep in sync with MESEvents.h
|
||||
_signalStrength = ev.value - 1;
|
||||
}
|
||||
static void initSignalStrength() {
|
||||
if (_signalStrength < 0) {
|
||||
_signalStrength = 0;
|
||||
uBit.messageBus.listen(MES_SIGNAL_STRENGTH_ID, MICROBIT_EVT_ANY, signalStrengthHandler);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last signal strength reported by the paired device.
|
||||
*/
|
||||
//% help=devices/signal-strength weight=24
|
||||
//% blockId=devices_signal_strength block="signal strength" blockGap=14 icon="\uf012" blockGap=14
|
||||
int signalStrength() {
|
||||
initSignalStrength();
|
||||
return _signalStrength;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers code to run when the device notifies about a change of signal strength.
|
||||
* @param body Code run when the signal strength changes.
|
||||
*/
|
||||
//% weight=23 help=devices/on-signal-strength-changed
|
||||
//% blockId=devices_signal_strength_changed_event block="on signal strength changed" icon="\uf012"
|
||||
void onSignalStrengthChanged(Action body) {
|
||||
initSignalStrength();
|
||||
registerWithDal(MES_SIGNAL_STRENGTH_ID, MICROBIT_EVT_ANY, body);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user