Skip to content
This repository has been archived by the owner on May 14, 2024. It is now read-only.

Commit

Permalink
Merge pull request #43 from circuitdojo/flow-control-button
Browse files Browse the repository at this point in the history
Feature: add flow control check box
  • Loading branch information
bencefr authored Oct 6, 2020
2 parents 7aef8b1 + 2343aa6 commit 2cf4ed8
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 1 deletion.
1 change: 1 addition & 0 deletions lib/actions/actionIds.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ export const PIN_REMAINING = 'PIN_REMAINING';
export const SET_MAIN_VIEW = 'SET_MAIN_VIEW';
export const UPDATE_TERMINAL = 'UPDATE_TERMINAL';
export const TERMINAL_AUTO_SCROLL = 'TERMINAL_AUTO_SCROLL';
export const FLOW_CONTROL = 'FLOW_CONTROL';
export const CHART_UPDATE = 'CHART_UPDATE';
export const CHART_WINDOW = 'CHART_WINDOW';
export const CHART_WINDOW_RESET = 'CHART_WINDOW_RESET';
Expand Down
2 changes: 1 addition & 1 deletion lib/actions/modemActions.js
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ export function open(portPath) {
dispatch(terminalActions.printTX(data));
}

port = new ModemPort(portPath, { writeCallback });
port = new ModemPort(portPath, { rtscts: getState().app.ui.flowControl, writeCallback });

port.on('event', unsolicitedHandler);
port.on('error', err => {
Expand Down
10 changes: 10 additions & 0 deletions lib/actions/uiActions.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import {
API_TOKEN_UPDATE, AUTO_REQUESTS,
SIGNAL_QUALITY_INTERVAL,
AUTO_DEVICE_FILTER_TOGGLED,
FLOW_CONTROL,
} from './actionIds';
import { changeSignalQualityInterval } from './modemActions';
import persistentStore from './persistentStore';
Expand All @@ -53,6 +54,14 @@ export function autoScrollToggledAction(autoScroll) {
};
}

export function flowControlToggledAction(flowControl) {
persistentStore.set('flowControl', !!flowControl);
return {
type: FLOW_CONTROL,
flowControl: !!flowControl,
};
}

export function apiTokenUpdateAction(apiToken) {
persistentStore.set('apiToken', apiToken);
return {
Expand Down Expand Up @@ -97,6 +106,7 @@ function loadAndDispatch(key, defaultValue, action) {
export function loadSettings() {
return dispatch => {
dispatch(loadAndDispatch('autoScroll', true, autoScrollToggledAction));
dispatch(loadAndDispatch('flowControl', true, flowControlToggledAction));
dispatch(loadAndDispatch('apiToken', 'pk.c748a4d4e6ce0bfd5491dcfb01ba9b10',
apiTokenUpdateAction));
dispatch(loadAndDispatch('autoRequests', true, autoRequestsToggledAction));
Expand Down
11 changes: 11 additions & 0 deletions lib/components/Settings.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ class Settings extends React.Component {
render() {
const {
autoScroll, autoScrollToggled,
flowControl, flowControlToggled,
apiToken,
autoRequests, autoRequestsToggled,
signalQualityInterval,
Expand Down Expand Up @@ -141,6 +142,14 @@ class Settings extends React.Component {
label="Terminal auto scroll"
/>
</Form.Group>
<Form.Group controlId="flowControlCheck">
<Form.Check
type="checkbox"
onChange={e => flowControlToggled(e.target.checked)}
checked={flowControl}
label="Flow control"
/>
</Form.Group>
Periodic signal quality request {signalQualityInterval > 0 ? `${signalQualityInterval}s` : 'off'}
<div className="slider-container">
<span>off</span>
Expand Down Expand Up @@ -189,6 +198,8 @@ class Settings extends React.Component {
Settings.propTypes = {
autoScroll: PropTypes.bool.isRequired,
autoScrollToggled: PropTypes.func.isRequired,
flowControlToggled: PropTypes.func.isRequired,
flowControl: PropTypes.bool.isRequired,
apiToken: PropTypes.string.isRequired,
apiTokenUpdate: PropTypes.func.isRequired,
autoRequests: PropTypes.bool.isRequired,
Expand Down
5 changes: 5 additions & 0 deletions lib/containers/Settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import { connect } from 'react-redux';
import TerminalView from '../components/Settings';
import {
autoScrollToggledAction,
flowControlToggledAction,
apiTokenUpdateAction,
autoRequestsToggledAction,
autoDeviceFilterToggledAction,
Expand All @@ -48,6 +49,7 @@ import { changeSignalQualityInterval } from '../actions/modemActions';
export default connect(
state => ({
autoScroll: state.app.ui.autoScroll,
flowControl: state.app.ui.flowControl,
pollSignalQuality: state.app.ui.pollSignalQuality,
apiToken: state.app.ui.apiToken,
autoRequests: state.app.ui.autoRequests,
Expand All @@ -58,6 +60,9 @@ export default connect(
autoScrollToggled: autoScroll => (
dispatch(autoScrollToggledAction(autoScroll))
),
flowControlToggled: flowControl => (
dispatch(flowControlToggledAction(flowControl))
),
apiTokenUpdate: apiToken => (
dispatch(apiTokenUpdateAction(apiToken))
),
Expand Down
8 changes: 8 additions & 0 deletions lib/reducers/uiReducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import * as actions from '../actions/actionIds';
const initialState = {
terminalUpdate: 0,
commands: [],
flowControl: true,
autoScroll: true,
apiToken: '',
autoRequests: false,
Expand Down Expand Up @@ -69,6 +70,13 @@ export default function reducer(state = initialState, action) {
autoScroll,
};
}
case actions.FLOW_CONTROL: {
const { flowControl } = action;
return {
...state,
flowControl,
};
}
case actions.API_TOKEN_UPDATE: {
const { apiToken } = action;
return {
Expand Down

0 comments on commit 2cf4ed8

Please sign in to comment.