Skip to content

Commit 415e0e5

Browse files
authored
Merge pull request #785 from entrylabs/develop-hw
하드웨어 버전업 1.9.59
2 parents 627b111 + 1dba8c2 commit 415e0e5

40 files changed

+2307
-26873
lines changed

app/firmwares/microbit.hex

-13,406
This file was deleted.

app/firmwares/microbit_ext.hex

-11,824
This file was deleted.

app/modules/altino.js

+189-137
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
function Module() {
22
this.tx_d = new Array(28);
33
this.rx_d56 = new Array(56);
4+
this.rx_setting = new Array(31);
45
this.rx_dtest = new Array(512);
56

67
this.sensordata = {
@@ -47,7 +48,14 @@ function Module() {
4748
dot5: 0,
4849
dot6: 0,
4950
dot7: 0,
50-
dot8: 0
51+
dot8: 0,
52+
command: 10,
53+
trim: 0,
54+
pgain: 0,
55+
igain: 0,
56+
dgain: 0,
57+
version: 0,
58+
cnt: 0
5159
};
5260

5361
for (var i = 0; i < 56; ++i) {
@@ -72,7 +80,15 @@ var ALTINO = {
7280
DOT5: 'dot5',
7381
DOT6: 'dot6',
7482
DOT7: 'dot7',
75-
DOT8: 'dot8'
83+
DOT8: 'dot8',
84+
COMMAND: 'command',
85+
TRIM: 'trim',
86+
PGAIN: 'pgain',
87+
IGAIN: 'igain',
88+
DGAIN: 'dgain',
89+
VERSION: 'version',
90+
SETTING: 'setting',
91+
CNT: 'cnt'
7692
};
7793

7894
Module.prototype.init = function(handler, config) {
@@ -136,121 +152,93 @@ Module.prototype.checkInitialData = function(data, config) {
136152
// 하드웨어 데이터 처리
137153
Module.prototype.handleLocalData = function(data) { // data: Native Buffer
138154

139-
140155
var buf = this.rx_d56;
156+
var settingBuf = this.rx_setting;
141157
var rx_check_sum = 0;
142158
var sensordata = this.sensordata;
143159
var buftest = this.rx_dtest;
160+
var motordata = this.motordata;
144161

145162
for (var i = 0; i < data.length; i++) {
146163
var str = data[i];
147-
buftest[i] = parseInt(str, 10);
148-
for (var j = 0; j < 55; j++) {
149-
buf[j] = buf[j + 1];
164+
165+
if(motordata.command == 252) {
166+
settingBuf[i] = parseInt(str, 10);
150167
}
151-
buf[55] = buftest[i];
152-
153-
if (buf[0] === 2 && buf[55] === 3 && buf[1] === 56) {
154-
155-
rx_check_sum = buf[0];
156-
rx_check_sum = rx_check_sum + buf[1];
157-
rx_check_sum = rx_check_sum + buf[3];
158-
rx_check_sum = rx_check_sum + buf[4];
159-
rx_check_sum = rx_check_sum + buf[5];
160-
rx_check_sum = rx_check_sum + buf[6];
161-
rx_check_sum = rx_check_sum + buf[7];
162-
rx_check_sum = rx_check_sum + buf[8];
163-
rx_check_sum = rx_check_sum + buf[9];
164-
rx_check_sum = rx_check_sum + buf[10];
165-
rx_check_sum = rx_check_sum + buf[11];
166-
rx_check_sum = rx_check_sum + buf[12];
167-
rx_check_sum = rx_check_sum + buf[13];
168-
rx_check_sum = rx_check_sum + buf[14];
169-
rx_check_sum = rx_check_sum + buf[15];
170-
rx_check_sum = rx_check_sum + buf[16];
171-
rx_check_sum = rx_check_sum + buf[17];
172-
rx_check_sum = rx_check_sum + buf[18];
173-
rx_check_sum = rx_check_sum + buf[19];
174-
rx_check_sum = rx_check_sum + buf[20];
175-
rx_check_sum = rx_check_sum + buf[21];
176-
rx_check_sum = rx_check_sum + buf[22];
177-
rx_check_sum = rx_check_sum + buf[23];
178-
rx_check_sum = rx_check_sum + buf[24];
179-
rx_check_sum = rx_check_sum + buf[25];
180-
rx_check_sum = rx_check_sum + buf[26];
181-
rx_check_sum = rx_check_sum + buf[27];
182-
rx_check_sum = rx_check_sum + buf[28];
183-
rx_check_sum = rx_check_sum + buf[29];
184-
rx_check_sum = rx_check_sum + buf[30];
185-
rx_check_sum = rx_check_sum + buf[31];
186-
rx_check_sum = rx_check_sum + buf[32];
187-
rx_check_sum = rx_check_sum + buf[33];
188-
rx_check_sum = rx_check_sum + buf[34];
189-
rx_check_sum = rx_check_sum + buf[35];
190-
rx_check_sum = rx_check_sum + buf[36];
191-
rx_check_sum = rx_check_sum + buf[37];
192-
rx_check_sum = rx_check_sum + buf[38];
193-
rx_check_sum = rx_check_sum + buf[39];
194-
rx_check_sum = rx_check_sum + buf[40];
195-
rx_check_sum = rx_check_sum + buf[41];
196-
rx_check_sum = rx_check_sum + buf[42];
197-
rx_check_sum = rx_check_sum + buf[43];
198-
rx_check_sum = rx_check_sum + buf[44];
199-
rx_check_sum = rx_check_sum + buf[45];
200-
rx_check_sum = rx_check_sum + buf[46];
201-
rx_check_sum = rx_check_sum + buf[47];
202-
rx_check_sum = rx_check_sum + buf[48];
203-
rx_check_sum = rx_check_sum + buf[49];
204-
rx_check_sum = rx_check_sum + buf[50];
205-
rx_check_sum = rx_check_sum + buf[51];
206-
rx_check_sum = rx_check_sum + buf[52];
207-
rx_check_sum = rx_check_sum + buf[53];
208-
rx_check_sum = rx_check_sum + buf[54];
209-
rx_check_sum = rx_check_sum + buf[55];
210-
211-
rx_check_sum = rx_check_sum % 256;
212-
213-
if (rx_check_sum === buf[2]) {
214-
215-
sensordata.ir1 = buf[7] * 256 + buf[8]; //ir1
216-
sensordata.ir2 = buf[9] * 256 + buf[10]; //ir2
217-
sensordata.ir3 = buf[11] * 256 + buf[12]; //ir3
218-
sensordata.ir4 = buf[13] * 256 + buf[14]; //ir4
219-
sensordata.ir5 = buf[15] * 256 + buf[16]; //ir5
220-
sensordata.ir6 = buf[17] * 256 + buf[18]; //ir6
221-
222-
sensordata.tor1 = buf[19] * 256 + buf[20]; //right torque
223-
sensordata.tor2 = buf[21] * 256 + buf[22]; //left torque
224-
225-
sensordata.tem = buf[49] * 256 + buf[50]; //temperature
226-
227-
sensordata.cds = buf[43] * 256 + buf[44]; //cds
228-
229-
sensordata.accx = buf[25] * 256 + buf[26]; //acc x
230-
sensordata.accy = buf[27] * 256 + buf[28]; //acc y
231-
sensordata.accz = buf[29] * 256 + buf[30]; //acc z
232-
233-
sensordata.magx = buf[31] * 256 + buf[32]; //mag x
234-
sensordata.magy = buf[33] * 256 + buf[34]; //mag y
235-
sensordata.magz = buf[35] * 256 + buf[36]; //mag z
236-
237-
sensordata.stvar = buf[45] * 256 + buf[46]; //steering var
238-
239-
sensordata.sttor = buf[23] * 256 + buf[24]; //steering torque
240-
241-
sensordata.bat = buf[47] * 256 + buf[48]; //battery
242-
243-
sensordata.remote = buf[51]; //remote control
244-
245-
sensordata.gyrox = buf[37] * 256 + buf[38]; //gyro sensor x
246-
sensordata.gyroy = buf[39] * 256 + buf[40]; //gyro sensor y
247-
sensordata.gyroz = buf[41] * 256 + buf[42]; //gyro sensor z
248-
}
168+
else {
169+
buf[i] = parseInt(str, 10);
170+
}
171+
}
249172

173+
if (buf[0] === 2 && buf[55] === 3 && buf[1] === 56) {
174+
for(var i = 0; i < 56; i++) {
175+
if(i != 2) rx_check_sum += buf[i];
250176
}
251177

252-
}
178+
rx_check_sum = rx_check_sum % 256;
179+
180+
if(rx_check_sum == buf[2]) {
181+
182+
sensordata.ir1 = buf[7] * 256 + buf[8]; //ir1
183+
sensordata.ir2 = buf[9] * 256 + buf[10]; //ir2
184+
sensordata.ir3 = buf[11] * 256 + buf[12]; //ir3
185+
sensordata.ir4 = buf[13] * 256 + buf[14]; //ir4
186+
sensordata.ir5 = buf[15] * 256 + buf[16]; //ir5
187+
sensordata.ir6 = buf[17] * 256 + buf[18]; //ir6
188+
189+
sensordata.tor1 = buf[19] * 256 + buf[20]; //right torque
190+
sensordata.tor2 = buf[21] * 256 + buf[22]; //left torque
191+
192+
sensordata.tem = buf[49] * 256 + buf[50]; //temperature
253193

194+
sensordata.cds = buf[43] * 256 + buf[44]; //cds
195+
196+
sensordata.accx = buf[25] * 256 + buf[26]; //acc x
197+
sensordata.accy = buf[27] * 256 + buf[28]; //acc y
198+
sensordata.accz = buf[29] * 256 + buf[30]; //acc z
199+
200+
sensordata.magx = buf[31] * 256 + buf[32]; //mag x
201+
sensordata.magy = buf[33] * 256 + buf[34]; //mag y
202+
sensordata.magz = buf[35] * 256 + buf[36]; //mag z
203+
204+
sensordata.stvar = buf[45] * 256 + buf[46]; //steering var
205+
206+
sensordata.sttor = buf[23] * 256 + buf[24]; //steering torque
207+
208+
sensordata.bat = buf[47] * 256 + buf[48]; //battery
209+
210+
sensordata.remote = buf[51]; //remote control
211+
212+
sensordata.gyrox = buf[37] * 256 + buf[38]; //gyro sensor x
213+
sensordata.gyroy = buf[39] * 256 + buf[40]; //gyro sensor y
214+
sensordata.gyroz = buf[41] * 256 + buf[42]; //gyro sensor z
215+
216+
motordata.cnt = 0;
217+
}
218+
buf.length = 0;
219+
220+
}
221+
222+
if (settingBuf[0] === 2 && settingBuf[1] === 31) {
223+
224+
motordata.trim = settingBuf[5];
225+
motordata.pgain = settingBuf[6];
226+
motordata.igain = settingBuf[7];
227+
motordata.dgain = settingBuf[8];
228+
motordata.version = settingBuf[26];
229+
230+
if(motordata.command == 252) {
231+
if(motordata.cnt == 0) {
232+
this.tx_d.length = 0;
233+
motordata.cnt += 1;
234+
}
235+
else if(motordata.cnt == 1) {
236+
this.tx_d.length = 0;
237+
motordata.cnt += 1;
238+
}
239+
}
240+
settingBuf.length = 0;
241+
}
254242
};
255243

256244
// Web Socket(엔트리)에 전달할 데이터
@@ -266,6 +254,15 @@ Module.prototype.handleRemoteData = function(handler) {
266254
var motordata = this.motordata;
267255
var newValue;
268256

257+
if(handler.e(ALTINO.COMMAND)) {
258+
259+
newValue = handler.read(ALTINO.COMMAND);
260+
261+
if (motordata.command != newValue) {
262+
motordata.command = newValue;
263+
}
264+
}
265+
269266
if (handler.e(ALTINO.RIGHT_WHEEL)) {
270267

271268
newValue = handler.read(ALTINO.RIGHT_WHEEL);
@@ -385,44 +382,100 @@ Module.prototype.handleRemoteData = function(handler) {
385382

386383
};
387384

388-
389385
// 하드웨어에 전달할 데이터
390386
Module.prototype.requestLocalData = function() {
391387
var motordata = this.motordata;
392388
var tx_d = this.tx_d;
393389
var u16_tx_check_sum = 0;
394390
var u16_tx_cnt;
395-
var u16_cnt = 27;
396-
397-
tx_d[0] = 0x2;
398-
tx_d[1] = 28;
399-
400-
tx_d[3] = 1;
401-
tx_d[4] = 10;
402-
tx_d[5] = motordata.steering;
403-
tx_d[6] = motordata.rightmode;
404-
tx_d[7] = (motordata.rightmotor & 0xFF00) >> 8;
405-
tx_d[8] = motordata.rightmotor & 0xFF;
406-
tx_d[9] = motordata.leftmode;
407-
tx_d[10] = (motordata.leftmotor & 0xFF00) >> 8;
408-
tx_d[11] = motordata.leftmotor & 0xFF;
409-
tx_d[12] = motordata.ascii;
410-
tx_d[13] = motordata.dot1;
411-
tx_d[14] = motordata.dot2;
412-
tx_d[15] = motordata.dot3;
413-
tx_d[16] = motordata.dot4;
414-
tx_d[17] = motordata.dot5;
415-
tx_d[18] = motordata.dot6;
416-
tx_d[19] = motordata.dot7;
417-
tx_d[20] = motordata.dot8;
418-
tx_d[21] = motordata.led2 | 0x01;
419-
tx_d[22] = motordata.note;
420-
tx_d[23] = motordata.led;
421-
tx_d[24] = 1;
422-
tx_d[25] = 0;
423-
tx_d[26] = 0;
424-
tx_d[27] = 0x3;
425391

392+
if(motordata.command == 252) {
393+
if(motordata.cnt == 0) {
394+
var u16_cnt = 21;
395+
396+
tx_d[0] = 0x2;
397+
tx_d[1] = 22;
398+
399+
tx_d[3] = 1;
400+
tx_d[4] = 252;
401+
tx_d[5] = 0;
402+
tx_d[6] = 0;
403+
tx_d[7] = 0;
404+
tx_d[8] = 0;
405+
tx_d[9] = 0;
406+
tx_d[10] = 0;
407+
tx_d[11] = 0;
408+
tx_d[12] = 0;
409+
tx_d[13] = 0;
410+
tx_d[14] = 0;
411+
tx_d[15] = 0;
412+
tx_d[16] = 0;
413+
tx_d[17] = 0;
414+
tx_d[18] = 0;
415+
tx_d[19] = 0;
416+
tx_d[20] = 0;
417+
tx_d[21] = 0x3;
418+
}
419+
else if(motordata.cnt == 1) {
420+
var u16_cnt = 21;
421+
422+
tx_d[0] = 0x2;
423+
tx_d[1] = 22;
424+
425+
tx_d[3] = 1;
426+
tx_d[4] = 252;
427+
tx_d[5] = 1;
428+
tx_d[6] = motordata.trim;
429+
tx_d[7] = motordata.pgain;
430+
tx_d[8] = motordata.igain;
431+
tx_d[9] = motordata.dgain;
432+
tx_d[10] = 0;
433+
tx_d[11] = 0;
434+
tx_d[12] = 0;
435+
tx_d[13] = 0;
436+
tx_d[14] = 0;
437+
tx_d[15] = 0;
438+
tx_d[16] = 0;
439+
tx_d[17] = motordata.version;
440+
tx_d[18] = 0;
441+
tx_d[19] = 0;
442+
tx_d[20] = 0;
443+
tx_d[21] = 0x3;
444+
}
445+
}
446+
else {
447+
motordata.cnt = 0;
448+
var u16_cnt = 27;
449+
450+
tx_d[0] = 0x2;
451+
tx_d[1] = 28;
452+
453+
tx_d[3] = 1;
454+
tx_d[4] = 10;
455+
tx_d[5] = motordata.steering;
456+
tx_d[6] = motordata.rightmode;
457+
tx_d[7] = (motordata.rightmotor & 0xFF00) >> 8;
458+
tx_d[8] = motordata.rightmotor & 0xFF;
459+
tx_d[9] = motordata.leftmode;
460+
tx_d[10] = (motordata.leftmotor & 0xFF00) >> 8;
461+
tx_d[11] = motordata.leftmotor & 0xFF;
462+
tx_d[12] = motordata.ascii;
463+
tx_d[13] = motordata.dot1;
464+
tx_d[14] = motordata.dot2;
465+
tx_d[15] = motordata.dot3;
466+
tx_d[16] = motordata.dot4;
467+
tx_d[17] = motordata.dot5;
468+
tx_d[18] = motordata.dot6;
469+
tx_d[19] = motordata.dot7;
470+
tx_d[20] = motordata.dot8;
471+
tx_d[21] = motordata.led2 | 0x01;
472+
tx_d[22] = motordata.note;
473+
tx_d[23] = motordata.led;
474+
tx_d[24] = 1;
475+
tx_d[25] = 0;
476+
tx_d[26] = 0;
477+
tx_d[27] = 0x3;
478+
}
426479

427480
u16_tx_check_sum = u16_tx_check_sum + tx_d[1];
428481
for (u16_tx_cnt = 3; u16_tx_cnt <= u16_cnt; u16_tx_cnt++) {
@@ -432,7 +485,6 @@ Module.prototype.requestLocalData = function() {
432485

433486

434487
tx_d[2] = u16_tx_check_sum;
435-
436488
return tx_d;
437489
};
438490

0 commit comments

Comments
 (0)