Skip to content

Commit 74d22da

Browse files
committed
Merge pull request #302 from parallaxinc/rxtx-timeout
Add rx/tx minimum unlit time, adjust minimum lit time
2 parents fa28358 + cf944fc commit 74d22da

File tree

6 files changed

+56
-3
lines changed

6 files changed

+56
-3
lines changed

src/constants/action-types.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ const actionTypes = {
88
ECHO_OFF: 'ECHO_OFF',
99
RX_ON: 'RX_ON',
1010
RX_OFF: 'RX_OFF',
11+
RX_CLEAR_TIMEOUT: 'RX_CLEAR_TIMEOUT',
1112
TX_ON: 'TX_ON',
1213
TX_OFF: 'TX_OFF',
14+
TX_CLEAR_TIMEOUT: 'TX_CLEAR_TIMEOUT',
1315
RECEIVE: 'RECEIVE',
1416
TRANSMIT: 'TRANSMIT',
1517
UPDATE_DURATION: 'UPDATE_DURATION',

src/creators/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ const creators = {
1616
// terminal creators
1717
rxOn: require('./rx-on'),
1818
rxOff: require('./rx-off'),
19+
rxClearTimeout: require('./rx-clear-timeout'),
1920
txOn: require('./tx-on'),
2021
txOff: require('./tx-off'),
22+
txClearTimeout: require('./tx-clear-timeout'),
2123
receive: require('./receive'),
2224
transmit: require('./transmit'),
2325
updateDuration: require('./update-duration'),

src/creators/rx-clear-timeout.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
'use strict';
2+
3+
const {
4+
RX_CLEAR_TIMEOUT
5+
} = require('../constants/action-types');
6+
7+
function rxClearTimeout(){
8+
return {
9+
type: RX_CLEAR_TIMEOUT,
10+
payload: {}
11+
};
12+
}
13+
14+
module.exports = rxClearTimeout;

src/creators/tx-clear-timeout.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
'use strict';
2+
3+
const {
4+
TX_CLEAR_TIMEOUT
5+
} = require('../constants/action-types');
6+
7+
function txClearTimeout(){
8+
return {
9+
type: TX_CLEAR_TIMEOUT,
10+
payload: {}
11+
};
12+
}
13+
14+
module.exports = txClearTimeout;

src/plugins/handlers.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -403,8 +403,15 @@ function handlers(app, opts, done){
403403
// .catch((err) => this._handleError(err));
404404
}
405405

406+
function rxClearTimeout(){
407+
consoleStore.dispatch(creators.rxClearTimeout());
408+
}
409+
406410
function rxOff(){
411+
const { rxtx } = consoleStore.getState();
412+
const { offDuration } = rxtx;
407413
consoleStore.dispatch(creators.rxOff());
414+
setTimeout(rxClearTimeout, offDuration);
408415
}
409416

410417
function rxOn(){
@@ -414,13 +421,20 @@ function handlers(app, opts, done){
414421
let timeout;
415422
if(!rxTimeout){
416423
timeout = setTimeout(rxOff, duration);
424+
consoleStore.dispatch(creators.rxOn(timeout));
417425
}
418426

419-
consoleStore.dispatch(creators.rxOn(timeout));
427+
}
428+
429+
function txClearTimeout(){
430+
consoleStore.dispatch(creators.txClearTimeout());
420431
}
421432

422433
function txOff(){
434+
const { rxtx } = consoleStore.getState();
435+
const { offDuration } = rxtx;
423436
consoleStore.dispatch(creators.txOff());
437+
setTimeout(txClearTimeout, offDuration);
424438
}
425439

426440
function txOn(){
@@ -430,9 +444,9 @@ function handlers(app, opts, done){
430444
let timeout;
431445
if(!txTimeout){
432446
timeout = setTimeout(txOff, duration);
447+
consoleStore.dispatch(creators.txOn(timeout));
433448
}
434449

435-
consoleStore.dispatch(creators.txOn(timeout));
436450
}
437451

438452
function updateDuration(duration){

src/reducers/rxtx.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ const _ = require('lodash');
1010
const {
1111
RX_ON,
1212
RX_OFF,
13+
RX_CLEAR_TIMEOUT,
1314
TX_ON,
1415
TX_OFF,
16+
TX_CLEAR_TIMEOUT,
1517
UPDATE_DURATION
1618
} = require('../constants/action-types');
1719

@@ -20,18 +22,23 @@ const initial = {
2022
rxTimeout: null,
2123
flashTx: false,
2224
txTimeout: null,
23-
duration: 50
25+
duration: 100,
26+
offDuration: 50
2427
};
2528

2629
function rxtx(state = initial, { type, payload }){
2730
switch(type){
2831
case RX_ON:
2932
return _.assign({}, state, { flashRx: true, rxTimeout: payload.timeout });
3033
case RX_OFF:
34+
return _.assign({}, state, { flashRx: false });
35+
case RX_CLEAR_TIMEOUT:
3136
return _.assign({}, state, { flashRx: false, rxTimeout: null });
3237
case TX_ON:
3338
return _.assign({}, state, { flashTx: true, txTimeout: payload.timeout });
3439
case TX_OFF:
40+
return _.assign({}, state, { flashTx: false });
41+
case TX_CLEAR_TIMEOUT:
3542
return _.assign({}, state, { flashTx: false, txTimeout: null });
3643
case UPDATE_DURATION:
3744
return _.assign({}, state, { duration: payload.duration });

0 commit comments

Comments
 (0)