Add custom impl of output; drop ev3-api

This commit is contained in:
Michal Moskal 2017-07-11 16:58:51 +02:00
parent 02e45762b4
commit 340d5e5cbf
5 changed files with 35 additions and 14 deletions

2
libs/core/dal.d.ts vendored
View File

@ -2,6 +2,7 @@
declare const enum DAL { declare const enum DAL {
// built/dockermake/pxtapp/ev3const.h // built/dockermake/pxtapp/ev3const.h
NUM_INPUTS = 4, NUM_INPUTS = 4,
NUM_OUTPUTS = 4,
LCD_WIDTH = 178, LCD_WIDTH = 178,
LCD_HEIGHT = 128, LCD_HEIGHT = 128,
NUM_BUTTONS = 6, NUM_BUTTONS = 6,
@ -45,6 +46,7 @@ declare const enum DAL {
CONN_OUTPUT_TACHO = 125, CONN_OUTPUT_TACHO = 125,
CONN_NONE = 126, CONN_NONE = 126,
CONN_ERROR = 127, CONN_ERROR = 127,
opProgramStart = 0x03,
opOutputGetType = 0xA0, opOutputGetType = 0xA0,
opOutputSetType = 0xA1, opOutputSetType = 0xA1,
opOutputReset = 0xA2, opOutputReset = 0xA2,

View File

@ -2,6 +2,7 @@
#define __PXT_EV3CONST_H #define __PXT_EV3CONST_H
#define NUM_INPUTS 4 #define NUM_INPUTS 4
#define NUM_OUTPUTS 4
#define LCD_WIDTH 178 #define LCD_WIDTH 178
#define LCD_HEIGHT 128 #define LCD_HEIGHT 128
#define NUM_BUTTONS 6 #define NUM_BUTTONS 6
@ -52,6 +53,7 @@
#define CONN_NONE 126 #define CONN_NONE 126
#define CONN_ERROR 127 #define CONN_ERROR 127
#define opProgramStart 0x03
#define opOutputGetType 0xA0 #define opOutputGetType 0xA0
#define opOutputSetType 0xA1 #define opOutputSetType 0xA1
#define opOutputReset 0xA2 #define opOutputReset 0xA2

View File

@ -1,5 +1,5 @@
#include "pxt.h" #include "pxt.h"
#include "ev3.h" #include "ev3const.h"
namespace output { namespace output {
@ -12,18 +12,11 @@ Buffer createBuffer(int size) {
return mkBuffer(NULL, size); return mkBuffer(NULL, size);
} }
extern "C" int WriteToPWMDevice(char *bytes, int num_bytes);
//%
void writePWM(Buffer buf) {
WriteToPWMDevice((char *)buf->data, buf->length);
}
} }
namespace pxt { namespace pxt {
void target_init() { void target_init() {
OutputInit();
} }
} }

View File

@ -13,8 +13,34 @@ enum OutputType {
} }
namespace output { namespace output {
//% shim=output::writePWM let pwmMM: MMap
function writePWM(buf: Buffer): void { } let motorMM: MMap
const enum MotorDataOff {
TachoCounts = 0, // int32
Speed = 4, // int8
Padding = 5, // int8[3]
TachoSensor = 8, // int32
Size = 12
}
function init() {
if (pwmMM) return
pwmMM = control.mmap("/dev/lms_pwm", 0, 0)
if (!pwmMM) control.fail("no PWM file")
motorMM = control.mmap("/dev/lms_motor", MotorDataOff.Size * DAL.NUM_OUTPUTS, 0)
stop(Output.ALL)
let buf = output.createBuffer(1)
buf[0] = DAL.opProgramStart
writePWM(buf)
}
function writePWM(buf: Buffer): void {
init()
pwmMM.write(buf)
}
function mkCmd(out: Output, cmd: number, addSize: number) { function mkCmd(out: Output, cmd: number, addSize: number) {
let b = createBuffer(2 + addSize) let b = createBuffer(2 + addSize)

View File

@ -30,9 +30,7 @@
"testFiles": [ "testFiles": [
"test.ts" "test.ts"
], ],
"npmDependencies": { "npmDependencies": {},
"ev3api-bin": "1.1.0"
},
"public": true, "public": true,
"dependencies": { "dependencies": {
"base": "file:../base" "base": "file:../base"