05.11.2014 Views

AN: Capstone Dive Computer Example - Quantum Leaps

AN: Capstone Dive Computer Example - Quantum Leaps

AN: Capstone Dive Computer Example - Quantum Leaps

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!