AN: Capstone Dive Computer Example - Quantum Leaps
AN: Capstone Dive Computer Example - Quantum Leaps
AN: Capstone Dive Computer Example - Quantum Leaps
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Application Note:<br />
<strong>Capstone</strong> <strong>Dive</strong> <strong>Computer</strong> <strong>Example</strong><br />
www.state-machine.com<br />
(4) QActive_subscribe((QActive *)me, B1_DOWN_SIG);<br />
QActive_subscribe((QActive *)me, B1_UP_SIG);<br />
QActive_subscribe((QActive *)me, B2_DOWN_SIG);<br />
QActive_subscribe((QActive *)me, B2_UP_SIG);<br />
. . .<br />
(5) return Q_TR<strong>AN</strong>(&<strong>Capstone</strong>_always);<br />
}<br />
/*..........................................................................*/<br />
(6) QState <strong>Capstone</strong>_always(<strong>Capstone</strong> *me, QEvent const *e) {<br />
(7) switch (e->sig) {<br />
(8) case Q_ENTRY_SIG: {<br />
QTimeEvt_postEvery(&me->heartbeat, (QActive *)me,<br />
BSP_TICKS_PER_SEC/2); /* every 1/2 second */<br />
QTimeEvt_postEvery(&me->dt_tts, (QActive *)me,<br />
BSP_TICKS_PER_SEC*2); /* every 2 seconds */<br />
(9) return Q_H<strong>AN</strong>DLED();<br />
}<br />
case Q_EXIT_SIG: {<br />
QTimeEvt_disarm(&me->heartbeat);<br />
QTimeEvt_disarm(&me->dt_tts);<br />
return Q_H<strong>AN</strong>DLED();<br />
}<br />
case Q_INIT_SIG: {<br />
(10) return Q_TR<strong>AN</strong>(&<strong>Capstone</strong>_surfaced);<br />
}<br />
case B2_DOWN_SIG: { /* depth unit change request */<br />
if (me->depth_units[0] == 'm') {<br />
me->depth_units[0] = 'f';<br />
}<br />
else {<br />
me->depth_units[0] = 'm';<br />
}<br />
<strong>Capstone</strong>_display_depth(me);<br />
return Q_H<strong>AN</strong>DLED();<br />
}<br />
case HEARTBEAT_SIG: { /* heartbeat arrives every 1/2 sec */<br />
ADC_StandbyModeCmd(DISABLE); /* exit ADC standby mode */<br />
ADC_ConversionCmd(ADC_Conversion_Start);/* start the conversion */<br />
BSP_LED_on(15); /* trun on the ADC conversion LED */<br />
if (me->heartbeat_led_sel) {<br />
BSP_LED_on(9);<br />
}<br />
else {<br />
BSP_LED_off(9);<br />
}<br />
me->heartbeat_led_sel = !me->heartbeat_led_sel;<br />
return Q_H<strong>AN</strong>DLED();<br />
}<br />
case DT_TTS_SIG: { /* alternate between dive-time/tts */<br />
if (me->dt_tts_sel) {<br />
HD44780_StrShow(LCD_TTS_X, LCD_TTS_Y, "TTS");<br />
HD44780_StrShow(LCD_TTS_X + 3, LCD_TTS_Y,<br />
ticks2min_sec(me->tts_in_ticks));<br />
}<br />
else {<br />
HD44780_StrShow(LCD_TTS_X, LCD_TTS_Y, "Div");<br />
HD44780_StrShow(LCD_TTS_X + 3, LCD_TTS_Y,<br />
ticks2min_sec(me->dive_time_in_ticks));<br />
}<br />
me->dt_tts_sel = !me->dt_tts_sel;<br />
Copyright © <strong>Quantum</strong> <strong>Leaps</strong>, LLC. All Rights Reserved.<br />
18 of 29