annotate src/comm.asm @ 634:4050675965ea

3.10 stable release
author heinrichsweikamp
date Tue, 28 Apr 2020 17:34:31 +0200
parents 185ba2f91f59
children 2737ddc643bb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
heinrichsweikamp
parents:
diff changeset
1 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
2 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
3 ; File comm.asm * combined next generation V3.09.5
0
heinrichsweikamp
parents:
diff changeset
4 ;
heinrichsweikamp
parents:
diff changeset
5 ; RS232 via USB
heinrichsweikamp
parents:
diff changeset
6 ;
heinrichsweikamp
parents:
diff changeset
7 ; Copyright (c) 2012, JD Gascuel, HeinrichsWeikamp, all right reserved.
heinrichsweikamp
parents:
diff changeset
8 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
9 ; HISTORY
heinrichsweikamp
parents:
diff changeset
10 ; 2011-08-22 : [mH] Creation
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
11 ; 2012-02-11 : [jDG] Added 0x63 set custom text, and "i" identify
0
heinrichsweikamp
parents:
diff changeset
12
275
653a3ab08062 rename into hwOS
heinrichsweikamp
parents: 273
diff changeset
13 #include "hwos.inc"
0
heinrichsweikamp
parents:
diff changeset
14 #include "eeprom_rs232.inc"
heinrichsweikamp
parents:
diff changeset
15 #include "tft.inc"
heinrichsweikamp
parents:
diff changeset
16 #include "wait.inc"
heinrichsweikamp
parents:
diff changeset
17 #include "strings.inc"
heinrichsweikamp
parents:
diff changeset
18 #include "convert.inc"
heinrichsweikamp
parents:
diff changeset
19 #include "external_flash.inc"
heinrichsweikamp
parents:
diff changeset
20 #include "tft_outputs.inc"
heinrichsweikamp
parents:
diff changeset
21 #include "surfmode.inc"
heinrichsweikamp
parents:
diff changeset
22 #include "rtc.inc"
heinrichsweikamp
parents:
diff changeset
23 #include "adc_lightsensor.inc"
299
6c4800af27ac Make char_I_bottom_usage and char_I_deco_usage configurable from PC
heinrichsweikamp
parents: 275
diff changeset
24 #include "shared_definitions.h"
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
25 #include "math.inc"
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
26 #include "i2c.inc"
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
27 #include "logbook.inc"
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
28 #include "colorschemes.inc"
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
29
0
heinrichsweikamp
parents:
diff changeset
30
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
31 extern restart
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
32 extern option_reset_all
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
33 extern option_check_and_store_all
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
34 extern option_read_serial
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
35 extern option_write_serial
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
36 extern gaslist_cleanup_list
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
37 extern eeprom_deco_data_write
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
38 extern eeprom_memorize_fw_checksum
0
heinrichsweikamp
parents:
diff changeset
39
heinrichsweikamp
parents:
diff changeset
40
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
41 ; timeouts
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
42 #DEFINE timeout_comm_pre_mode .240 ; [sec] timeout before communication is established
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
43 #DEFINE timeout_service_mode .120 ; [sec] timeout when communication is established
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
44
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
45 ; positioning of title
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
46 #DEFINE comm_title_row .0
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
47 #DEFINE comm_title_column_usb .40
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
48 #DEFINE comm_title_column_ble .25
0
heinrichsweikamp
parents:
diff changeset
49
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
50 ; positioning of host-sent text messages
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
51 #DEFINE comm_string_row .30
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
52 #DEFINE comm_string_column .40
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
53
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
54 ; positioning of COMM mode status messages
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
55 #DEFINE comm_status1_row .70
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
56 #DEFINE comm_status1_column .10
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
57 #DEFINE comm_status2_row .100
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
58 #DEFINE comm_status2_column comm_status1_column
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
59 #DEFINE comm_status3_row .130
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
60 #DEFINE comm_status3_column comm_status1_column
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
61 #DEFINE comm_status4_row .160
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
62 #DEFINE comm_status4_column comm_status1_column
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
63 #DEFINE comm_status5_row .190
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
64 #DEFINE comm_status5_column comm_status1_column
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
65
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
66
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
67 ; positioning of COMM mode warning icon
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
68 #DEFINE comm_warning_row .160
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
69 #DEFINE comm_warning_column .65
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
70
0
heinrichsweikamp
parents:
diff changeset
71
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
72 ;#DEFINE testloop_avail ; uncomment if testloop code is available
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
73
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
74 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
75 comm CODE
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
76 ;=============================================================================
0
heinrichsweikamp
parents:
diff changeset
77
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
78 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
79 ; Entry Point for Comm Mode / USB
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
80 ;
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
81 global comm_mode_usb
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
82 comm_mode_usb: ; entry point for comm mode via USB
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
83 WAITMS d'1' ; wait 1 ms
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
84 btfss vusb_in ; USB still plugged in?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
85 return ; NO - it was only a glitch, abort
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
86 WAITMS d'1' ; YES - wait 1 ms
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
87 btfss vusb_in ; - USB still plugged in?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
88 return ; NO - it was only a glitch, abort
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
89 bsf aux_flag ; YES - remember to show USB title
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
90 bra comm_mode_common ; - continue with common part
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
91
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
92
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
93 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
94 ; Entry Point for Comm Mode / BT
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
95 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
96 global comm_mode_bt
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
97 comm_mode_bt: ; entry point for comm mode via BT
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
98 bcf aux_flag ; remember to show BLE title
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
99 ;bra comm_mode_common ; continue with common part
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
100
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
101
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
102 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
103 ; Common Part of Comm Mode Entry
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
104 ;
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
105 comm_mode_common:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
106 clrf STKPTR ; reset addresses stack
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
107 call TFT_ClearScreen ; clear screen
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
108 FONT_COLOR color_greenish ; set color
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
109
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
110 btfss aux_flag ; shall show USB title?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
111 bra comm_mode_common_bt ; NO - show BT title
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
112 ;bra comm_mode_common_usb ; YES - show USB title
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
113
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
114 comm_mode_common_usb:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
115 WIN_SMALL comm_title_column_usb, comm_title_row ; set USB title position
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
116 STRCPY_TEXT_PRINT tUsbTitle ; print USB title text
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
117 bra comm_mode_common_logo ; continue with logo
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
118
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
119 comm_mode_common_bt:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
120 WIN_SMALL comm_title_column_ble, comm_title_row ; set BT title position
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
121 STRCPY_TEXT_PRINT tBleTitle ; print BT title text
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
122 ;bra comm_mode_common_logo ; continue with logo
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
123
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
124 comm_mode_common_logo:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
125 WIN_TOP .10 ; set position of USB/BLE logo, row
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
126 WIN_LEFT .1 ; set position of USB/BLE logo, column
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
127 btfss battery_gauge_available ; "+" bootloader ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
128 bra comm_mode_common_logo2 ; YES - show logo type 2
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
129 ;bra comm_mode_common_logo1 ; NO - show logo type 1
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
130
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
131 comm_mode_common_logo1:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
132 TFT_WRITE_PROM_IMAGE_BY_ADDR comm_logo_1 ; show USB/BT logo
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
133 bra comm_mode_common_start ; continue with starting message
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
134
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
135 comm_mode_common_logo2:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
136 TFT_WRITE_PROM_IMAGE_BY_ADDR comm_logo_2 ; show BT logo / OSTC+
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
137 ;bra comm_mode_common_start ; continue with starting message
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
138
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
139 comm_mode_common_start:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
140 WIN_SMALL comm_status1_column,comm_status1_row ; set position
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
141 FONT_COLOR_MEMO ; set standard color
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
142 STRCPY_TEXT_PRINT tUsbStarting ; print status message "starting..."
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
143
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
144 WIN_TINY .40,.240-.16 ; set output position to bottom line
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
145 call TFT_print_serial_and_firmware ; show serial number and firmware version
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
146
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
147 IFDEF _screendump
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
148 bcf screen_dump_avail ; disable screen dump function
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
149 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
150
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
151 bcf switch_right ; clear potential left-over right button event
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
152 call enable_rs232 ; enable serial comm, also sets CPU to normal speed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
153
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
154 WIN_SMALL comm_status1_column+.80,comm_status1_row ; set position after starting message
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
155 FONT_COLOR_MEMO ; set standard color
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
156 STRCPY_TEXT_PRINT tUsbStartDone ; print (adding to status message) "done..."
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
157
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
158 movlw timeout_comm_pre_mode ; get timeout for phase without communication established yet
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
159 movwf comm_timeout_timer ; initialize timeout counter
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
160 ;bra comm_mode_selection_loop ; continue with mode selection loop
0
heinrichsweikamp
parents:
diff changeset
161
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
162
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
163 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
164 ; Mode Selection Loop: Download Mode or Service Mode
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
165 ;
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
166 comm_mode_selection_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
167 bcf trigger_full_second ; clear 'one second elapsed' flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
168 bcf LEDr ; switch off red LED / power down TR co-processor
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
169 dcfsnz comm_timeout_timer,F ; decrement timeout, reached zero?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
170 bra comm_service_exit ; YES - timeout, exit comm mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
171 ;bra comm_mode_selection_loop_1 ; NO - try to receive a byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
172 comm_mode_selection_loop_1:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
173 SERIAL_CC_RECEIVE lo ; (try to) receive 1 byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
174 btfsc rs232_rx_timeout ; timeout?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
175 bra comm_mode_selection_loop_2 ; YES - check for comm mode termination
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
176 movf lo,W ; NO - copy received byte to lo
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
177 xorlw 0xAA ; - service mode start byte received?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
178 bz comm_service_mode_check ; YES - check if correct key will be send
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
179 movf lo,W ; NO - copy received byte to lo again
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
180 xorlw 0xBB ; - download mode start byte received?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
181 bz comm_download_mode ; YES - enter command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
182 ;bra comm_mode_selection_loop_2 ; NO - check for comm mode termination
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
183 comm_mode_selection_loop_2:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
184 btfsc ble_available ; BT available?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
185 bra comm_mode_selection_loop_3 ; YES - skip USB check check (required for very old OSTC sport)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
186 btfss vusb_in ; NO - USB plugged in?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
187 bra comm_service_exit_nousb_delay ; NO - disconnected, check for vusb_in glitch
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
188 ;bra comm_mode_selection_loop_3 ; YES - check for exit button or continue looping
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
189 comm_mode_selection_loop_3:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
190 btfsc switch_right ; right button pressed?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
191 bra comm_service_exit ; YES - exit comm mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
192 btfsc trigger_full_second ; NO - did 1 second elapsed meanwhile?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
193 bra comm_mode_selection_loop ; YES - loop with clocking down timeout counter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
194 bra comm_mode_selection_loop_1 ; NO - loop without clocking down timeout counter
0
heinrichsweikamp
parents:
diff changeset
195
heinrichsweikamp
parents:
diff changeset
196
heinrichsweikamp
parents:
diff changeset
197 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
198 ; Check Service Mode Pass-Key and notify Service Mode on Success
0
heinrichsweikamp
parents:
diff changeset
199 ;
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
200 comm_service_mode_check:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
201 SERIAL_LC_SEND 0x4B ; request peer to send service key
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
202
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
203 ; receive a 3 byte service key transmitted in big-endian, echo each byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
204
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
205 clrf WREG ; clear WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
206
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
207 SERIAL_CC_RECEIVE lo ; receive 1st byte, store in lo
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
208 xorwf lo,W ; exclusive-or received byte into WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
209 xorlw UPPER (comm_service_key) ; exclusive-or expected byte into WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
210 SERIAL_CC_SEND lo ; echo 1st byte
0
heinrichsweikamp
parents:
diff changeset
211
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
212 SERIAL_CC_RECEIVE lo ; receive 2nd byte, store in lo
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
213 xorwf lo,W ; exclusive-or received byte into WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
214 xorlw HIGH (comm_service_key & 0xFFFF) ; exclusive-or expected byte into WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
215 SERIAL_CC_SEND lo ; echo 2nd byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
216
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
217 SERIAL_CC_RECEIVE lo ; receive 3rd byte, store in lo
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
218 xorwf lo,W ; exclusive-or received byte into WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
219 xorlw LOW (comm_service_key & 0xFFFF) ; exclusive-or expected byte into WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
220 SERIAL_CC_SEND lo ; echo 3rd byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
221
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
222 ; check for correct service key
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
223 tstfsz WREG ; received expected service key?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
224 bra comm_mode_selection_loop ; NO - back to mode selection loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
225 WIN_SMALL comm_status2_column, comm_status2_row ; YES - print service mode enabled message
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
226 FONT_COLOR_MEMO ; - set standard color
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
227 STRCPY_TEXT_PRINT tUsbServiceMode ; - ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
228 bsf comm_service_mode ; - enable service mode commands
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
229 bra comm_command_loop ; - enter command loop
0
heinrichsweikamp
parents:
diff changeset
230
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
231
0
heinrichsweikamp
parents:
diff changeset
232 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
233 ; Notify RX Timeout occurred
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
234 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
235 comm_command_timeout:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
236 WIN_SMALL comm_status4_column, comm_status4_row ; select font and output position
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
237 FONT_COLOR_WARNING ; set warning color
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
238 STRCPY_PRINT "Data Rx Timeout" ; print failure message
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
239 FONT_COLOR_MEMO ; back to standard color
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
240 bra comm_drain_rx_queue ; continue with draining the RX queue
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
241
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
242
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
243 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
244 ; Notify Error in Parameters
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
245 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
246 comm_command_error:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
247 WIN_SMALL comm_status4_column, comm_status4_row ; select font and output position
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
248 FONT_COLOR_WARNING ; set warning color
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
249 STRCPY_PRINT "Parameter Error" ; print failure message
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
250 FONT_COLOR_MEMO ; back to standard color
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
251 ;bra comm_drain_rx_queue ; continue with draining the RX queue
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
252
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
253
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
254 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
255 ; Drain the RX Queue until next Timeout
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
256 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
257 comm_drain_rx_queue:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
258 bsf INTCON,GIE ; re-enable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
259 comm_drain_rx_queue_loop:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
260 btfsc switch_right ; right button (abort) pressed?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
261 bra comm_service_exit ; YES - exit comm mode
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
262 SERIAL_CC_RECEIVE WREG ; NO - (try to) receive one byte
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
263 btfss rs232_rx_timeout ; - got a byte?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
264 bra comm_drain_rx_queue_loop ; YES - try to drain more bytes
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
265 bra comm_command_loop ; NO - re-enter command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
266
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
267
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
268 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
269 ; Debug Code - show Number of Bytes received
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
270 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
271 IFDEF _comm_debug
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
272 comm_command_debug:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
273 WIN_SMALL comm_status5_column, comm_status5_row ; select font and output position
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
274 FONT_COLOR_MEMO ; set standard color
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
275 STRCPY "last RX: " ; print label
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
276 output_9999 ; print number of bytes received (0-9999)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
277 STRCAT_PRINT " Byte" ; finalize output
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
278 bra comm_command_loop ; re-enter command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
279 ENDIF
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
280
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
281
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
282 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
283 ; Notify Download Mode selected
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
284 ;
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
285 comm_download_mode:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
286 SERIAL_LC_SEND 0xBB ; inform peer download mode will be started
0
heinrichsweikamp
parents:
diff changeset
287
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
288 WIN_SMALL comm_status2_column, comm_status2_row ; set position
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
289 FONT_COLOR_MEMO ; set standard color
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
290 STRCPY_TEXT_PRINT tUsbDownloadMode ; print download mode enabled message
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
291 bcf comm_service_mode ; disable service mode commands
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
292 ;bra comm_command_loop ; enter command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
293
0
heinrichsweikamp
parents:
diff changeset
294
heinrichsweikamp
parents:
diff changeset
295 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
296 ; Command Loop: await, decode and execute Commands
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
297 ;
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
298 comm_command_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
299 bsf INTCON,GIE ; re-enable all interrupts
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
300
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
301 ; restart command timeout
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
302 movlw timeout_service_mode ; get timeout value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
303 movwf comm_timeout_timer ; reload timeout timer
0
heinrichsweikamp
parents:
diff changeset
304
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
305 ; request peer to send a command
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
306 movlw 0x4D ; default request code is 0x4D for download mode active
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
307 btfsc comm_service_mode ; service mode enabled?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
308 movlw 0x4C ; YES - change request to 0x4C for service mode active
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
309 SERIAL_CC_SEND WREG ; send request
0
heinrichsweikamp
parents:
diff changeset
310
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
311 ; wait for peer to send a command
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
312 comm_command_loop_wait:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
313 SERIAL_CC_RECEIVE lo ; (try to) receive a command byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
314 btfss rs232_rx_timeout ; timeout?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
315 bra comm_command_decode ; NO - decode and execute the command
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
316 btfsc comm_service_mode ; YES - service mode enabled?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
317 btg LEDr ; YES - blink in service mode
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
318 btfsc ble_available ; - BT available?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
319 bra comm_command_loop_wait_1 ; YES - skip USB check (required for very old OSTC sport)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
320 btfss vusb_in ; NO - USB still plugged in?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
321 bra comm_service_exit_nousb ; NO - disconnected -> exit comm mode
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
322 ;bra comm_command_loop_wait_1 ; YES - proceed
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
323
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
324 comm_command_loop_wait_1:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
325 btfsc switch_right ; right button (abort) pressed?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
326 bra comm_service_exit ; YES - exit comm mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
327 btfss trigger_full_second ; NO - did 1 second elapsed meanwhile?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
328 bra comm_command_loop_wait ; NO - loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
329 dcfsnz comm_timeout_timer,F ; YES - decrement the timeout timer, reached zero?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
330 bra comm_service_exit ; YES - exit comm mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
331 bcf trigger_full_second ; NO - clear 'one second elapsed' flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
332 bra comm_command_loop_wait ; - loop
346
cf9ce6053dee New option to download "Compact Headers". Improved BLE support (OSTC 2 and OSTC 3+), updated OSTC interface documentation
heinrichsweikamp
parents: 337
diff changeset
333
cf9ce6053dee New option to download "Compact Headers". Improved BLE support (OSTC 2 and OSTC 3+), updated OSTC interface documentation
heinrichsweikamp
parents: 337
diff changeset
334
cf9ce6053dee New option to download "Compact Headers". Improved BLE support (OSTC 2 and OSTC 3+), updated OSTC interface documentation
heinrichsweikamp
parents: 337
diff changeset
335 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
336 ; Macro for easier writing of Command Decoding Rules
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
337 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
338 command_decode macro command_id,command_function
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
339 movf lo,W ; copy received command to WREG
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
340 xorlw command_id ; exclusive-or with command ID
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
341 btfsc STATUS,Z ; received command = command ID ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
342 goto command_function ; YES - execute command
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
343 endm
0
heinrichsweikamp
parents:
diff changeset
344
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
345
0
heinrichsweikamp
parents:
diff changeset
346 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
347 ; Decode and execute a Command
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
348 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
349 comm_command_decode:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
350 bcf LEDr ; switch off red led
80
db920ca01491 new commands in download mode:
mh@mh-THINK.localdomain
parents: 79
diff changeset
351
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
352 ; decode and execute standard commands
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
353 command_decode 0x6E,comm_show_text ; n show a text on the screen
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
354 command_decode 0x69,comm_identify ; i send ID: serial, firmware, and custom text
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
355 command_decode 0x6A,comm_hardware_descriptor ; j send ID: hardware descriptor byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
356 command_decode 0x60,comm_feature_and_hardware ; ' send ID: more detailed information
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
357 command_decode 0x6D,comm_send_headers_short ; m send all headers in compact format
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
358 command_decode 0x61,comm_send_headers_full ; a send all headers is full format
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
359 command_decode 0x66,comm_send_dive ; f send header and profile for one dive
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
360 command_decode 0x62,comm_set_time ; b set the real time clock
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
361 command_decode 0x63,comm_set_custom_text ; c write a new custom text
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
362 command_decode 0x72,comm_read_option ; r read an option value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
363 command_decode 0x77,comm_write_option ; w write an option value (into RAM)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
364 command_decode 0x78,comm_option_reset_all ; x reset all option values to their factory default
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
365 command_decode 0xFF,comm_service_exit ; exit comm mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
366 IFDEF _screendump
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
367 command_decode 0x6C,TFT_dump_screen ; l dump the screen contents
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
368 ENDIF
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
369
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
370 btfss comm_service_mode ; service mode enabled?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
371 bra comm_command_loop ; NO - ignore unrecognized command, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
372
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
373 ; decode and execute additional service mode commands
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
374 command_decode 0x23,comm_reset_battery_gauge ; # reset the battery gauge registers
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
375 command_decode 0x22,comm_erase_complete_logbook ; " reset all logbook pointers and the logbook
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
376 command_decode 0x20,comm_read_range ;' ' read a memory range from the external FLASH
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
377 command_decode 0x40,comm_erase_single_4kb ; @ erase a single 4 kB block - Warning: no confirmation or built-in safety here...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
378 command_decode 0x42,comm_erase_range_4kb ; B erase a range of 4 kB blocks - Warning: no confirmation or built-in safety here...
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
379 command_decode 0x30,comm_write_range_stream ; 0 write a stream of bytes starting at ext_flash_address:3 until timeout
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
380 command_decode 0x31,comm_write_range_block ; 1 write a block of 256 bytes starting at ext_flash_address:3
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
381 command_decode 0x50,comm_firmware_update ; P initiate firmware update
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
382 command_decode 0xC1,comm_cold_start ; start low-level bootloader
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
383 IFDEF testloop_avail
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
384 command_decode 0x74,testloop ; t start raw-data test loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
385 ENDIF
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
386
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
387 bra comm_command_loop ; ignore unrecognized command, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
388
80
db920ca01491 new commands in download mode:
mh@mh-THINK.localdomain
parents: 79
diff changeset
389
db920ca01491 new commands in download mode:
mh@mh-THINK.localdomain
parents: 79
diff changeset
390 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
391 ; Exit Comm Mode
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
392 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
393 comm_service_exit:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
394 WIN_SMALL comm_status3_column, comm_status3_row ; print "Exited" message
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
395 FONT_COLOR_MEMO ; set standard color
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
396 STRCPY_TEXT_PRINT tUsbExit ; ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
397 bra comm_service_exit_common ; acknowledge exit command and restart
0
heinrichsweikamp
parents:
diff changeset
398
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
399 comm_service_exit_nousb_delay:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
400 WAITMS d'200' ; wait 200 ms
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
401 btfsc vusb_in ; USB sensed again?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
402 bra comm_mode_selection_loop_3 ; YES - was just a glitch, continue
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
403 ;bra comm_service_exit_nousb ; NO - proceed exiting
0
heinrichsweikamp
parents:
diff changeset
404
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
405 comm_service_exit_nousb:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
406 WIN_SMALL comm_status3_column, comm_status3_row ; print "Port closed" message
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
407 FONT_COLOR_MEMO ; set standard color
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
408 STRCPY_TEXT_PRINT tUsbClosed ; ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
409 ;bra comm_service_exit_common ; proceed exiting
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
410
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
411 comm_service_exit_common:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
412 SERIAL_LC_SEND 0xFF ; acknowledge exit command
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
413 WAITS .1 ; wait 1 second to give the serial I/F time
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
414 ; to send the 0xFF before it gets shut down
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
415 call disable_rs232 ; shut down comm port
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
416 bcf LEDr ; switch off red LED
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
417 WAITS .1 ; wait 1 second for BT module supply to drain
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
418 goto restart ; restart
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
419
0
heinrichsweikamp
parents:
diff changeset
420
heinrichsweikamp
parents:
diff changeset
421 ;-----------------------------------------------------------------------------
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
422 ; Set Real-Time-Clock
0
heinrichsweikamp
parents:
diff changeset
423 ;
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
424 comm_set_time:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
425 bcf INTCON,GIE ; disable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
426 SERIAL_LC_SEND 0x62 ; acknowledge command
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
427 SERIAL_RR_RECEIVE mpr,.6 ; (try to) receive 6 bytes: hour, minute, second, month, day, year
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
428 bsf INTCON,GIE ; re-enable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
429
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
430 btfsc rs232_rx_timeout ; got all 6 bytes?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
431 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
432
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
433 movff mpr+0,rtc_latched_hour ; map the received bytes onto the rtc_latched variables
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
434 movff mpr+1,rtc_latched_mins ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
435 movff mpr+2,rtc_latched_secs ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
436 movff mpr+3,rtc_latched_month ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
437 movff mpr+4,rtc_latched_day ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
438 movff mpr+5,rtc_latched_year ; ...
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
439 call rtc_set_rtc ; write time and date to RTC module
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
440 bra comm_command_loop ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
441
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
442
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
443 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
444 ; Write a 15 char Text to the OSTC Display
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
445 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
446 comm_show_text:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
447 ; set font and output position (needs to be done before SERIAL_RR_RECEIVE)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
448 WIN_SMALL comm_string_column, comm_string_row
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
449 FONT_COLOR_MEMO ; set standard color
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
450
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
451 bcf INTCON,GIE ; disable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
452 SERIAL_LC_SEND 0x6E ; acknowledge command
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
453 SERIAL_RR_RECEIVE buffer,.16 ; (try to) receive 16 chars into the string buffer
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
454 bsf INTCON,GIE ; re-enable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
455
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
456 movlw .15 ; set maximum text length
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
457 call TFT_buffer_trim_length ; fill or trim the text to correct length
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
458 PRINT ; print text to screen
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
459 bra comm_command_loop ; done, back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
460
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
461
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
462 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
463 ; Send Serial (2 bytes low:high), Firmware (major.minor) and Custom Text
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
464 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
465 comm_identify:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
466 SERIAL_LC_SEND 0x69 ; acknowledge command
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
467
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
468 ; send OSTC serial number
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
469 call eeprom_serial_number_read ; read OSTC serial number
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
470 SERIAL_CC_SEND mpr+0 ; send serial number, low byte
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
471 SERIAL_CC_SEND mpr+1 ; send serial number, high byte
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
472
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
473 ; send firmware version
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
474 SERIAL_LC_SEND fw_version_major ; send firmware version, major
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
475 SERIAL_LC_SEND fw_version_minor ; send firmware version, minor
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
476
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
477 ; send custom text
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
478 SERIAL_RR_SEND opt_name,opt_name_length
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
479
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
480 bra comm_command_loop ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
481
0
heinrichsweikamp
parents:
diff changeset
482
heinrichsweikamp
parents:
diff changeset
483 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
484 ; Send short Hardware Descriptor
0
heinrichsweikamp
parents:
diff changeset
485 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
486 comm_hardware_descriptor:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
487 SERIAL_LC_SEND 0x6A ; acknowledge command
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
488 rcall comm_helper_hw_descriptor ; send hardware descriptor
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
489 bra comm_command_loop ; done, back to command loop
0
heinrichsweikamp
parents:
diff changeset
490
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
491
235
23311219dacc under construction: new hardware_flag to configure different hardware versions
heinrichsweikamp
parents: 223
diff changeset
492 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
493 ; Helper Function for sending Hardware Descriptor
235
23311219dacc under construction: new hardware_flag to configure different hardware versions
heinrichsweikamp
parents: 223
diff changeset
494 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
495 comm_helper_hw_descriptor:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
496 movf HW_descriptor,W ; get hardware descriptor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
497 bcf WREG,6 ; clear bit 6 for reason of compatibility with 3rd party software
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
498 bcf WREG,7 ; clear bit 7 for reason of compatibility with 3rd party software
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
499 SERIAL_CC_SEND WREG ; send modified hardware descriptor
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
500 return
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
501
0
heinrichsweikamp
parents:
diff changeset
502
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
503 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
504 ; Send detailed Hardware Descriptor
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
505 ;
441
360acdcda0d7 +BUGFIX: Compatibility with "hwOS Config" fixed
heinrichsweikamp
parents: 426
diff changeset
506 comm_feature_and_hardware:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
507 SERIAL_LC_SEND 0x60 ; acknowledge command
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
508
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
509 SERIAL_LC_SEND 0x00 ; send hardware high byte (fixed zero)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
510 rcall comm_helper_hw_descriptor ; send hardware descriptor
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
511 SERIAL_LC_SEND 0x00 ; send feature high byte (fixed zero)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
512 SERIAL_LC_SEND 0x00 ; send feature low byte (fixed zero)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
513 SERIAL_LC_SEND 0x00 ; send model descriptor byte (fixed zero)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
514
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
515 bra comm_command_loop ; done, back to command loop
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
516
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
517
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
518 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
519 ; Helper Function to retrieve a Header, hide the internal Profile Version,
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
520 ; and to check if the Header is empty
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
521 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
522 comm_helper_read_header:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
523 ; copy header from FLASH into memory
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
524 call log_header_addr_by_index ; compute header start address from index in WREG
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
525 FLASH_RR_READ header_buffer,.256 ; copy from FLASH to header buffer
0
heinrichsweikamp
parents:
diff changeset
526
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
527 ; hide internal profile version ID from the outside
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
528 movff header_buffer+index_profile_version,WREG ; get byte at the profile version position
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
529 infsnz WREG,W ; was the byte = 0xFF (i.e. empty header) ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
530 return ; YES - leave it as it is (WREG now 0)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
531 decf WREG,W ; NO - restore the profile version
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
532 andlw b'00111111' ; - keep only the external part
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
533 movff WREG,header_buffer+index_profile_version ; - write back the cleaned byte
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
534 return ; - done (WREG now ext. profile version)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
535
0
heinrichsweikamp
parents:
diff changeset
536
heinrichsweikamp
parents:
diff changeset
537 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
538 ; Send Dive Headers in short or full Format
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
539 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
540 comm_send_headers_short:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
541 SERIAL_LC_SEND 0x6D ; acknowledge command
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
542 bcf aux_flag ; send short headers
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
543 bra comm_send_headers_common ; continue with common part
0
heinrichsweikamp
parents:
diff changeset
544
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
545 comm_send_headers_full:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
546 SERIAL_LC_SEND 0x61 ; acknowledge command
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
547 bsf aux_flag ; send full headers
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
548 ;bra comm_send_headers_common ; continue with common part
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
549
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
550 comm_send_headers_common:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
551 clrf ex ; start with dive having index 0
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
552
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
553 comm_send_headers_loop:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
554 movf ex,W ; get index into WREG
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
555 rcall comm_helper_read_header ; get header into header_buffer
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
556
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
557 btfss aux_flag ; shall send full headers?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
558 bra comm_send_headers_loop_short; NO - send short headers
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
559 ;bra comm_send_headers_loop_full ; YES - send full headers
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
560
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
561 comm_send_headers_loop_full:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
562 SERIAL_RR_SEND header_buffer,.256 ; send the full header
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
563 bra comm_send_headers_loop_com ; continue with common part
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
564
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
565 comm_send_headers_loop_short:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
566 ; send the fractions of the short header (16 byte/dive)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
567 SERIAL_RR_SEND header_buffer+index_profile_byte_count,.13
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
568 SERIAL_RR_SEND header_buffer+index_total_dives, .2
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
569 SERIAL_CC_SEND header_buffer+index_profile_version ; .1
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
570 ;bra comm_send_headers_loop_com ; continue with common part
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
571
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
572 comm_send_headers_loop_com:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
573 incfsz ex ; increment index, wrap-around. i.e. all dives done ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
574 bra comm_send_headers_loop ; NO - loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
575 bra comm_command_loop ; YES - done, back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
576
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
577
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
578 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
579 ; Send one full Dive
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
580 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
581 comm_send_dive:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
582 SERIAL_LC_SEND 0x66 ; acknowledge command
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
583
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
584 SERIAL_CC_RECEIVE WREG ; (try to) receive the dive index
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
585 btfsc rs232_rx_timeout ; got dive index?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
586 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
587
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
588 rcall comm_helper_read_header ; read header into header_buffer
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
589 bz comm_send_dive_exit ; abort if header contains no dive
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
590
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
591 ; get the start and end address of the profile data
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
592 MOVTT header_buffer+index_profile_start_address,ext_flash_address
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
593 MOVTT header_buffer+index_profile_end_address, ext_flash_end_pointer
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
594
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
595 ; header start code sequence present?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
596 bcf aux_flag ; default to no profile available
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
597
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
598 FLASH_CW_READ_0x20 ; get the 1st byte of profile data
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
599 xorlw 0xFA ; 1st byte = header start byte?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
600 bnz comm_send_dive_modify_header; NO - no profile data available
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
601
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
602 FLASH_CW_READ_0x20 ; get the 2nd byte of profile data
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
603 xorlw 0xFA ; 2nd byte = header start byte?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
604 bnz comm_send_dive_modify_header; NO - no profile data available
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
605
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
606 EXT_FLASH_INC_ADDRESS_0x20 .2 ; skip the 3rd and 4th byte (dive number)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
607
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
608 FLASH_CW_READ_0x20 ; get the 5th byte of profile data
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
609 xorlw 0xFA ; 5th byte = header start byte?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
610 bnz comm_send_dive_modify_header; NO - no profile data available
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
611
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
612 FLASH_CW_READ_0x20 ; get the 6th byte of profile data
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
613 xorlw 0xFA ; 6th byte = header start byte?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
614 bnz comm_send_dive_modify_header; NO - no profile data available
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
615
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
616 bsf aux_flag ; memorize profile data available
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
617 bra comm_send_dive_header ; continue with sending header
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
618
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
619 comm_send_dive_modify_header:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
620 ; set profile data start and end address to 0x000000
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
621 CLRR header_buffer+index_profile_start_address,.6
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
622
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
623 ; set hi = 0x00, lo = 0x08
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
624 MOVLI 0x0008,mpr
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
625
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
626 ; set byte count to 0x000008
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
627 movff lo,header_buffer+index_profile_byte_count+0 ; = 0x08
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
628 movff hi,header_buffer+index_profile_byte_count+1 ; = 0x00
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
629 movff hi,header_buffer+index_profile_byte_count+2 ; = 0x00
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
630
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
631 comm_send_dive_header:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
632 SERIAL_RR_SEND header_buffer,.256 ; send the header from the buffer
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
633
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
634 btfss aux_flag ; profile data available?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
635 bra comm_send_dive_empty_profile; NO - send empty profile
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
636
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
637 comm_send_dive_profile:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
638 FLASH_CW_READ_0x20 ; read one byte and increment address with rollover at 0x200000
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
639 SERIAL_CC_SEND WREG ; transmit the byte
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
640
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
641 ; 24 bit compare of current address with end address
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
642 movf ext_flash_end_pointer+0,W ; check low byte of addresses
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
643 cpfseq ext_flash_address+0 ; current address = end address ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
644 bra comm_send_dive_profile ; NO - more bytes to do, loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
645
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
646 movf ext_flash_end_pointer+1,W ; check high byte of addresses
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
647 cpfseq ext_flash_address+1 ; current address = end address ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
648 bra comm_send_dive_profile ; NO - more bytes to do, loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
649
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
650 movf ext_flash_end_pointer+2,W ; check upper byte of addresses
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
651 cpfseq ext_flash_address+2 ; current address = end address ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
652 bra comm_send_dive_profile ; NO - more bytes to do, loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
653
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
654 comm_send_dive_exit:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
655 bra comm_command_loop ; done, back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
656
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
657 comm_send_dive_empty_profile:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
658
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
659 ; send profile length
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
660 SERIAL_RR_SEND header_buffer+index_profile_byte_count,.3
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
661
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
662 SERIAL_LC_SEND 0xFD ; send end-of-profile sequence, byte 1
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
663 SERIAL_LC_SEND 0xFD ; send end-of-profile sequence, byte 2
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
664
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
665 bra comm_command_loop ; done, back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
666
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
667
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
668 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
669 ; Reset all Options to Factory Default
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
670 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
671 comm_option_reset_all:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
672 SERIAL_LC_SEND 0x78 ; acknowledge command
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
673 call option_reset_all ; reset all options to factory default
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
674 bra comm_command_loop ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
675
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
676
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
677 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
678 ; Set Custom Text (opt_name_length ASCII chars)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
679 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
680 comm_set_custom_text:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
681 CLRR opt_name,opt_name_length ; clear old custom text
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
682
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
683 bcf INTCON,GIE ; disable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
684 SERIAL_LC_SEND 0x63 ; acknowledge command
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
685 SERIAL_RR_RECEIVE opt_name,opt_name_length ; receive new custom text
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
686 bsf INTCON,GIE ; re-enable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
687 bsf option_changed ; flag that EEPROM needs to be updated
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
688
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
689 bra comm_command_loop ; done, back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
690
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
691
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
692 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
693 ; Reset Battery Gauge
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
694 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
695 comm_reset_battery_gauge:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
696 ; SERIAL_LC_SEND 0x23 ; acknowledge command (not done)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
697 call reset_battery_gauge_and_lt2942 ; reset battery registers and battery gauge chip
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
698 bra comm_command_loop ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
699
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
700
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
701 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
702 ; Erase complete Logbook
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
703 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
704 comm_erase_complete_logbook:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
705 ; SERIAL_LC_SEND 0x22 ; acknowledge command (not done)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
706 call erase_complete_logbook ; erase complete logbook
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
707 bra comm_command_loop ; done, back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
708
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
709
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
710 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
711 ; Start Bootloader (aka perform cold start)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
712 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
713 comm_cold_start:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
714 ; SERIAL_LC_SEND 0xC1 ; acknowledge command (not done)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
715
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
716 WIN_SMALL comm_status3_column, comm_status3_row ; set position
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
717 FONT_COLOR_MEMO ; set standard color
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
718 STRCPY_TEXT_PRINT tUsbLlBld ; print "Low-level Bootloader" message
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
719
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
720 WIN_TOP comm_warning_row ; set row for icon
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
721 WIN_LEFT comm_warning_column ; set column for icon
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
722 TFT_WRITE_PROM_IMAGE_BY_LABEL dive_warning2_block ; show a warning icon
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
723
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
724 bsf LEDr ; switch on red LED
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
725
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
726 call eeprom_deco_data_write ; update deco data in EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
727 call eeprom_battery_gauge_write ; update battery gauge in EEPROM
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
728 btfsc option_changed ; do the options need to be stored to EEPROM ?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
729 call option_check_and_store_all ; YES - check and store all option values in EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
730
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
731 ; WAITS .1 ; wait 1 second to give the serial I/F time
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
732 ; ; to send the ackn before it gets shut down
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
733
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
734 goto 0x1FF0C ; jump into the bootloader code for cold start
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
735
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
736
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
737 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
738 ; Send Firmware to Bootloader (aka initiate Firmware Update)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
739 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
740 comm_firmware_update:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
741 bcf INTCON,GIE ; disable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
742 SERIAL_LC_SEND 0x50 ; acknowledge command
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
743 SERIAL_RR_RECEIVE buffer,.5 ; (try to) receive 5 byte checksum
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
744 bsf INTCON,GIE ; re-enable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
745
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
746 btfsc rs232_rx_timeout ; got all 5 bytes?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
747 bra comm_send_firmware_abort ; NO - abort
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
748
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
749 ; check the checksum
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
750 movlw 0x55 ; initialize checksum check-byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
751 movwf hi ; store in hi
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
752 INIT_BUFFER ; go back to start of the buffer
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
753 movlw .5 ; 5 bytes to process
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
754 movwf lo ; initialize loop counter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
755 comm_firmware_update_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
756 movf POSTINC2,W ; get a checksum byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
757 xorwf hi,F ; xor checksum byte with check-byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
758 rlncf hi,F ; rotate check-byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
759 decfsz lo,F ; decrement loop counter, done?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
760 bra comm_firmware_update_loop ; NO - loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
761 tstfsz hi ; YES - check-byte zero?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
762 bra comm_send_firmware_failed ; NO - checksum not valid
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
763
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
764 ; checksum is valid
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
765 SERIAL_LC_SEND 0x4C ; inform checksum is ok
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
766 WAITS .1 ; wait 1 second to give the serial I/F time
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
767 ; to send the 0x4C before it gets shut down
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
768 ;bra comm_firmware_update_exec ; execute update
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
769
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
770 global comm_firmware_update_exec
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
771 comm_firmware_update_exec:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
772 call eeprom_memorize_fw_checksum ; memorize fw checksum in EEPROM
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
773 call eeprom_deco_data_write ; update deco data in EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
774 call eeprom_battery_gauge_write ; update battery gauge in EEPROM
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
775 btfsc option_changed ; do the options need to be stored to EEPROM ?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
776 call option_check_and_store_all ; YES - check and store all option values in EEPROM
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
777 goto 0x1FDF0 ; jump into the bootloader code for firmware update
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
778
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
779
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
780 comm_send_firmware_failed:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
781 ; select font and output position
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
782 WIN_SMALL comm_string_column, comm_string_row
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
783 FONT_COLOR_WARNING ; set warning color
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
784 STRCPY_PRINT "Checksum failed" ; print failure message (fill to 15 chars)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
785 ;bra comm_send_firmware_abort ; abort
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
786
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
787 comm_send_firmware_abort:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
788 SERIAL_LC_SEND 0xFF ; send checksum failure message
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
789 bra comm_command_loop ; done, back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
790
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
791
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
792 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
793 ; Erase a single Block or a Range of Blocks
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
794 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
795 comm_erase_single_4kb:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
796 bcf INTCON,GIE ; disable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
797 bcf aux_flag ; do a single block only
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
798 ; SERIAL_LC_SEND 0x40 ; acknowledge command (not done)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
799 bra comm_erase_get_start ; continue with getting start address
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
800
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
801 comm_erase_range_4kb:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
802 bcf INTCON,GIE ; disable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
803 bsf aux_flag ; do a range of blocks
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
804 SERIAL_LC_SEND 0x42 ; acknowledge command
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
805 ;bra comm_erase_get_start ; continue with getting start address
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
806
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
807 comm_erase_get_start:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
808 rcall comm_get_start_address ; (try to) get the start address
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
809 btfsc rs232_rx_timeout ; got start address?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
810 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
811 btfsc aux_flag ; YES - shall erase a range of blocks?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
812 bra comm_erase_get_count ; YES - get the block count
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
813 movlw .1 ; NO - set 1 block to do
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
814 movwf WREG ; - ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
815 bra comm_erase_common ; - start the erasing
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
816
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
817 comm_erase_get_count:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
818 SERIAL_CC_RECEIVE WREG ; (try to) receive the block count
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
819 btfsc rs232_rx_timeout ; got block count?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
820 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
821 tstfsz WREG ; YES - block count = 0 ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
822 bra comm_erase_common ; NO - start the erasing
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
823 bra comm_command_error ; YES - invalid, show error message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
824
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
825 comm_erase_common:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
826 bsf INTCON,GIE ; re-enable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
827 call ext_flash_erase_range ; erase #WREG 4kB blocks starting at ext_flash_address
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
828 bra comm_command_loop ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
829
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
830
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
831 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
832 ; Write a Stream of Bytes to the FLASH beginning at given Start Address, finish on Timeout
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
833 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
834 comm_write_range_stream:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
835 bcf INTCON,GIE ; disable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
836 SERIAL_LC_SEND 0x30 ; acknowledge command
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
837
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
838 rcall comm_get_start_address ; (try to) get the start address
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
839 btfsc rs232_rx_timeout ; got a complete start address?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
840 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
841
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
842 IFDEF _comm_debug
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
843 CLRI mpr ; clear mpr to be used as a 16 bit counter
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
844 ENDIF
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
845
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
846 comm_write_range_stream_loop:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
847 SERIAL_CC_RECEIVE WREG ; (try to) receive one byte
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
848 btfsc rs232_rx_timeout ; got a byte?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
849 IFNDEF _comm_debug
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
850 bra comm_command_loop ; NO - timeout, done, back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
851 ELSE
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
852 bra comm_command_debug ; NO - timeout, done, show number of bytes received
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
853 ENDIF
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
854 ; bsf NCTS ; YES - hold Bluetooth chip (requires PC/Android/iOS side to use flow control...)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
855 call ext_flash_write_byte_0x40_nowait; - write byte to FLASH, increase address with rollover at 0x400000, does not wait on FLASH
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
856 ; bcf NCTS ; - release Bluetooth chip (requires PC/Android/iOS side to use flow control...)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
857 IFDEF _comm_debug
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
858 INCI mpr ; increment counter
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
859 ENDIF
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
860 bra comm_write_range_stream_loop ; - loop
157
5ee76921e359 make new parameters configurable through pc
heinrichsweikamp
parents: 150
diff changeset
861
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
862
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
863 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
864 ; Write a Block of 256 Bytes to the FLASH beginning at given Start Address (low byte needs to be zero)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
865 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
866 comm_write_range_block:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
867 bcf INTCON,GIE ; disable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
868 SERIAL_LC_SEND 0x31 ; acknowledge command
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
869
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
870 rcall comm_get_start_address ; (try to) get the start address
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
871 btfsc rs232_rx_timeout ; got a complete start address?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
872 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
873
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
874 tstfsz ext_flash_address+0 ; low byte of start address = 0 ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
875 bra comm_command_error ; NO - show error message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
876
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
877 SERIAL_RR_RECEIVE buffer,.256 ; (try to) receive 256 byte and buffer them in memory
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
878 bsf INTCON,GIE ; re-enable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
879 btfsc rs232_rx_timeout ; got all 256 bytes?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
880 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
881
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
882 FLASH_RR_WRITE buffer,.256 ; copy from memory to FLASH
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
883 bra comm_command_loop ; done, back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
884
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
885
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
886 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
887 ; Read a Memory Range from FLASH given by Start Address and Byte Count
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
888 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
889 comm_read_range:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
890 bcf INTCON,GIE ; disable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
891 SERIAL_LC_SEND 0x20 ; acknowledge command
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
892
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
893 ; receive start address
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
894 rcall comm_get_start_address ; (try to) get the start address
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
895 btfsc rs232_rx_timeout ; got a complete start address?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
896 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
897
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
898 ; receive byte count
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
899 rcall comm_get_length ; (try to) get the byte count
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
900 btfsc rs232_rx_timeout ; got a complete byte count?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
901 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
902
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
903 bsf INTCON,GIE ; re-enable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
904
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
905 ; decrement byte counter by 1 so that all bytes will be done when the counter wraps around to 0xFFFFFF
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
906 EXT_FLASH_DEC_LENGTH
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
907
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
908 ; check validity of the byte count
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
909 movlw 0x40 ; now the byte count is allowed to be 0x3FFFFF at max
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
910 cpfslt ext_flash_length_counter+2 ; length count < 0x40(0000) ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
911 bra comm_command_error ; NO - show error message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
912
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
913 ; stream bytes from FLASH
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
914 call ext_flash_read_block_start ; read first byte from FLASH into WREG
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
915 bra comm_read_range_loop_start ; jump into transmit loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
916 comm_read_range_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
917 call ext_flash_read_block_0x40 ; read next byte into WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
918 comm_read_range_loop_start:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
919 SERIAL_CC_SEND WREG ; transmit byte
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
920 EXT_FLASH_DEC_LENGTH ; decrement byte counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
921 btfss ext_flash_length_counter+2,7; under-run?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
922 bra comm_read_range_loop ; NO - continue loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
923 call ext_flash_read_block_stop ; YES - end reading from FLASH
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
924 bra comm_command_loop ; - done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
925
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
926
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
927 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
928 ; Receive a 3 byte FLASH address (on serial: big-endian, in memory: little-endian)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
929 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
930 comm_get_start_address:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
931 SERIAL_RR_RECEIVE ext_flash_address,.3 ; (try to) receive 3 bytes
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
932 btfsc rs232_rx_timeout ; timeout?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
933 return ; YES - abort, no usable address available
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
934
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
935 ; remap address from network byte format (big endian) to host format (little-endian)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
936 movf ext_flash_address+0,W
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
937 movff ext_flash_address+2,ext_flash_address+0
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
938 movwf ext_flash_address+2
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
939
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
940 return ; done, complete start address available
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
941
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
942
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
943 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
944 ; Receive a 3 byte length (on serial: big-endian, in memory: little-endian)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
945 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
946 comm_get_length:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
947 SERIAL_RR_RECEIVE ext_flash_length_counter,.3 ; receive 3 bytes
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
948 btfsc rs232_rx_timeout ; timeout?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
949 return ; YES - abort, no usable address available
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
950
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
951 ; remap address from network byte format (big endian) to host format (little-endian)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
952 movf ext_flash_length_counter+0,W
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
953 movff ext_flash_length_counter+2,ext_flash_length_counter+0
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
954 movwf ext_flash_length_counter+2
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
955
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
956 return ; done, complete start address available
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
957
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
958
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
959 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
960 ; Read an Option Value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
961 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
962 comm_read_option:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
963 SERIAL_LC_SEND 0x72 ; acknowledge command
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
964 SERIAL_CC_RECEIVE lo ; (try to) receive option index
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
965 btfsc rs232_rx_timeout ; received option index?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
966 bra comm_command_loop ; NO - show rx timeout message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
967
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
968 ; option index 0x00 - 0x0F: unused
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
969 movlw 0x0F ; last option index of the unused range
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
970 cpfsgt lo ; received option index > end of unused range ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
971 bra comm_command_error ; NO - show error message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
972
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
973 ; option index 0x10 - 0x19: gases & diluents
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
974 movlw 0x19 ; last option index for gases / diluents
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
975 cpfsgt lo ; received option index > end of gas/dil range ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
976 bra comm_read_gas_dil ; NO - process gas/dil read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
977
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
978 ; option index 0x1A - 0x1E: setpoints
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
979 movlw 0x1E ; last option index for setpoint
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
980 cpfsgt lo ; received option index > end of setpoint range ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
981 bra comm_read_sp ; NO - process setpoint read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
982
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
983 ; option index = 0x49 - special handling button polarity
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
984 movf lo,W ; copy option index to WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
985 iorlw 0x49 ; received option index for button polarity ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
986 bz comm_read_button_polarity ; YES - process button polarity read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
987
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
988 ; option index 0x1F - 0xF9: options managed by option table
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
989 movlw 0xF9 ; last option index for options
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
990 cpfsgt lo ; received option index > end of options range?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
991 bra comm_read_option_index ; YES - process option value read via index
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
992
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
993 bra comm_command_error ; NO - illegal option index
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
994
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
995
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
996 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
997 ; Write an Option Value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
998 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
999 comm_write_option:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1000 bcf INTCON,GIE ; disable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1001 SERIAL_LC_SEND 0x77 ; acknowledge command
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1002 SERIAL_CC_RECEIVE lo ; (try to) receive option index
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1003 btfsc rs232_rx_timeout ; got a byte?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1004 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1005
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1006 ; option index 0x00 - 0x0F: unused
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1007 movlw 0x0F ; last option index of the unused range
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1008 cpfsgt lo ; received option index > end of unused range ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1009 bra comm_write_unused ; NO - but need to consume the option value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1010
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1011 ; option index 0x10 - 0x19: gases & diluents
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1012 movlw 0x19 ; last option index for gases / diluents
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1013 cpfsgt lo ; received option index > end of gas/dil range ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1014 bra comm_write_gas_dil ; NO - process gas/dil write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1015
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1016 ; option index 0x1A - 0x1E: setpoints
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1017 movlw 0x1E ; last option index for setpoint
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1018 cpfsgt lo ; received option index > end of setpoint range ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1019 bra comm_write_sp ; NO - process setpoint write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1020
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1021 ; option index = 0x49 - special handling button polarity
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1022 movf lo,W ; copy option index to WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1023 iorlw 0x49 ; received option index for button polarity ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1024 bz comm_write_button_polarity ; YES - process button polarity write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1025
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1026 ; option index 0x1F - 0xF9: options managed by option table
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1027 movlw 0xF9 ; last option index for options
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1028 cpfsgt lo ; received option index > end of options range?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1029 bra comm_write_option_index ; YES - process option value write via index
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1030
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1031 bra comm_write_unused ; NO - illegal option index
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1032
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1033
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1034 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1035 ; Read an Option Value via its Serial Index
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1036 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1037 comm_read_option_index:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1038 call option_read_serial ; try to find the option and read its value
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1039 tstfsz WREG ; option found?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1040 bra comm_read_setting_fail ; NO - send dummy value
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1041 SERIAL_CC_SEND hi ; YES - send read value
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1042 bra comm_command_loop ; - done, back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1043
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1044 comm_read_setting_fail:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1045 SERIAL_LC_SEND 0x00 ; send a dummy value
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1046 bra comm_command_error ; back to command loop with failure message
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1047
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1048
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1049 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1050 ; Write an Option Value via its Serial Index
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1051 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1052 comm_write_option_index:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1053 SERIAL_CC_RECEIVE hi ; (try to) receive option value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1054 btfsc rs232_rx_timeout ; got a byte?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1055 bra comm_command_timeout ; NO - abort
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1056 call option_write_serial ; YES - try to find the option and write new value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1057 tstfsz WREG ; - option found and new value valid ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1058 bra comm_command_error ; NO - back to command loop with failure message
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1059 bra comm_command_loop ; YES - done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1060
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1061 comm_write_unused:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1062 SERIAL_CC_RECEIVE WREG ; consume unused option value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1063 bra comm_command_error ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1064
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1065
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1066 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1067 ; Read Button Polarity
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1068 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1069 comm_read_button_polarity:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1070 SERIAL_CC_SEND button_polarity ; send current button polarity setting
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1071 bra comm_command_loop ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1072
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1073
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1074 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1075 ; Write Button Polarity
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1076 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1077 comm_write_button_polarity:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1078 SERIAL_CC_RECEIVE hi ; (try to) receive configuration value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1079 btfsc rs232_rx_timeout ; got configuration value?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1080 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1081 movff hi,button_polarity ; YES - store button polarity in memory and EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1082 EEPROM_CC_WRITE button_polarity,eeprom_button_polarity
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1083 bra comm_command_loop ; - done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1084
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1085
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1086 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1087 ; Read a Gas/Diluent Dataset
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1088 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1089 ; memory map is as follows:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1090 ; -------------------------
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1091 ; opt_gas_O2_ratio res 5 ; O2 ratios of OC/bailout gases
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1092 ; opt_dil_O2_ratio res 5 ; O2 ratios of diluents
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1093 ; opt_gas_He_ratio res 5 ; He ratios of OC/bailout gases
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1094 ; opt_dil_He_ratio res 5 ; He ratios of diluents
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1095 ; opt_gas_type res 5 ; OC/bailout gas type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1096 ; opt_dil_type res 5 ; dil type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1097 ; opt_gas_change res 5 ; change depths for OC/Bailout gases
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1098 ; opt_dil_change res 5 ; change depths for diluents
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1099 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1100 comm_read_gas_dil:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1101 lfsr FSR0,opt_gas_O2_ratio ; load base address of gas data arrays
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1102 movlw 0x10 ; compute gas index from option index...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1103 subwf lo,W ; ...making WREG point to O2 ratio
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1104 SERIAL_CC_SEND PLUSW0 ; send O2 ratio
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1105 addlw .10 ; increment WREG by 10 to point to He ratio
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1106 SERIAL_CC_SEND PLUSW0 ; send He ratio
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1107 addlw .10 ; increment WREG by 10 to point to gas/diluent type
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1108 SERIAL_CC_SEND PLUSW0 ; send gas/diluent type
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1109 addlw .10 ; increment WREG by 10 to point to change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1110 SERIAL_CC_SEND PLUSW0 ; send change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1111 bra comm_command_loop ; done, back to command loop
110
d39493c786a2 BUGFIX: OSTC settings via USB issues
heinrichsweikamp
parents: 97
diff changeset
1112
79
0fc8113ddf6d new command in download mode: "r" - read setting
mh@mh-THINK.localdomain
parents: 69
diff changeset
1113
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1114 ; ----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1115 ; Write a Gas/Diluent Dataset
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1116 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1117 ; memory map is as follows:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1118 ; -------------------------
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1119 ; opt_gas_O2_ratio res 5 ; O2 ratios of OC/bailout gases
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1120 ; opt_dil_O2_ratio res 5 ; O2 ratios of diluents
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1121 ; opt_gas_He_ratio res 5 ; He ratios of OC/bailout gases
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1122 ; opt_dil_He_ratio res 5 ; He ratios of diluents
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1123 ; opt_gas_type res 5 ; OC/bailout gas type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1124 ; opt_dil_type res 5 ; dil type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1125 ; opt_gas_change res 5 ; change depths for OC/Bailout gases
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1126 ; opt_dil_change res 5 ; change depths for diluents
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1127 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1128 comm_write_gas_dil:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1129 SERIAL_RR_RECEIVE hi,.4 ; (try to) receive 4 option values
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1130 btfsc rs232_rx_timeout ; got all 4 bytes?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1131 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
80
db920ca01491 new commands in download mode:
mh@mh-THINK.localdomain
parents: 79
diff changeset
1132
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1133 ; check validity of O2 value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1134 movlw gaslist_min_o2-.1 ; get min value minus 1
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1135 cpfsgt hi ; received O2% >= min ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1136 bra comm_command_error ; NO - show error message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1137 movlw gaslist_max_o2+.1 ; get max value plus 1
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1138 cpfslt hi ; received O2% <= max ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1139 bra comm_command_error ; NO - show error message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1140
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1141 ; check validity of He value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1142 movlw gaslist_max_He+.1 ; get max value plus 1
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1143 cpfslt up ; received O2% <= max ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1144 bra comm_command_error ; NO - show error message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1145
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1146 IFDEF _helium
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1147 ; check O2% + He% <= 100%
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1148 movlw .100 ; load WREG with 100%
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1149 bsf STATUS,C ; set carry = clear borrow
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1150 subfwb hi,W ; subtract O2% from WREG
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1151 subfwb up,W ; subtract He% from WREG
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1152 btfss STATUS,C ; result negative?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1153 bra comm_command_error ; YES - show error message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1154 ENDIF ; _helium
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1155
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1156 ; check validity of type
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1157 movlw 0x14 ; last option index for gases
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1158 cpfsgt lo ; received option index > end of gas range ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1159 bra comm_write_check_dil ; YES - check type for diluents
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1160 ;bra comm_write_check_gas ; NO - check type for gases
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1161
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1162 comm_write_check_gas:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1163 ; check validity of type for a gas
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1164 movlw num_gas_types ; load number of gas types
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1165 bra comm_write_check_com ; continue with common part
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1166
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1167 comm_write_check_dil:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1168 ; check validity of type for a diluent
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1169 movlw num_dil_types ; load number of diluent types
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1170 ;bra comm_write_check_com ; continue with common part
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1171
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1172 comm_write_check_com:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1173 cpfslt ex ; received type < max ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1174 bra comm_command_error ; NO - show error message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1175
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1176 ; check validity of change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1177 movlw gaslist_max_change_depth+.1 ; get max value plus 1
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1178 cpfslt ul ; received change depth <= max ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1179 bra comm_command_error ; NO - show error message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1180
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1181 ; all values ok, can finally be written
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1182 lfsr FSR0,opt_gas_O2_ratio ; load base address of gas data arrays
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1183 movlw 0x10 ; compute gas index from option index...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1184 subwf lo,W ; ...making WREG point to O2 ratio
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1185
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1186 movff hi,PLUSW0 ; set O2 ratio
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1187 addlw .10 ; increment WREG by 10 to point to He ratio
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1188 movff up,PLUSW0 ; set He ratio
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1189 addlw .10 ; increment WREG by 10 to point to gas/dil type
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1190 movff ex,PLUSW0 ; set gas/dil type
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1191 addlw .10 ; increment WREG by 10 to point to change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1192 movff ul,PLUSW0 ; set change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1193
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1194 bsf option_changed ; flag that EEPROM needs to be updated
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1195 bra comm_command_loop ; done, back to command loop
80
db920ca01491 new commands in download mode:
mh@mh-THINK.localdomain
parents: 79
diff changeset
1196
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1197
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1198 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1199 ; Read a Setpoint Dataset
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1200 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1201 ; memory map is as follows:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1202 ; -------------------------
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
1203 ; opt_setpoint_cbar res 5 ; setpoints in cbar
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
1204 ; opt_setpoint_change res 5 ; change depth for the setpoints in meter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1205 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1206 comm_read_sp:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
1207 lfsr FSR0,opt_setpoint_cbar ; load base address of setpoint cbar values
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1208 movlw 0x1A ; compute SP index from option index...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1209 subwf lo,W ; ...making WREG point to cbar value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1210 SERIAL_CC_SEND PLUSW0 ; send setpoint cbar value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1211 addlw .5 ; increment WREG by 5 to point to change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1212 SERIAL_CC_SEND PLUSW0 ; send change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1213 bra comm_command_loop ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1214
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1215
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1216 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1217 ; Write a Setpoint Dataset
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1218 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1219 ; memory map is as follows:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1220 ; -------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1221 ; opt_setpoint_cbar res 5 ; setpoints in cbar
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1222 ; opt_setpoint_change res 5 ; change depths in meter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1223 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1224 comm_write_sp:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1225 SERIAL_RR_RECEIVE hi,.2 ; (try to) receive 2 option values
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1226 btfsc rs232_rx_timeout ; got both bytes?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1227 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1228
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1229 ; check validity of setpoint value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1230 movlw gaslist_sp_min-.1 ; get min value minus 1
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1231 cpfsgt hi ; received O2% >= min ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1232 bra comm_command_error ; NO - show error message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1233 movlw gaslist_sp_max+.1 ; get max value plus 1
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1234 cpfslt hi ; received O2% <= max ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1235 bra comm_command_error ; NO - show error message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1236
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1237 ; check validity of change depth
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1238 movlw gaslist_sp_max_depth+.1 ; get max value plus 1
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1239 cpfslt up ; received change depth <= max ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1240 bra comm_command_error ; NO - show error message and back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1241
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1242 lfsr FSR0,opt_setpoint_cbar ; load base address of setpoint cbar values
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1243 movlw 0x1A ; compute SP index from option index...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1244 subwf lo,W ; ...making WREG point to cbar value
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1245
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1246 bnz comm_write_sp_exec ; selected SP is 2...5 -> execute write
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1247 tstfsz up ; SP1: change depth = 0 ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1248 bra comm_command_error ; NO - show error message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1249
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1250 comm_write_sp_exec:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1251 movff hi,PLUSW0 ; set cbar value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1252 addlw .5 ; increment WREG by 5 to point to change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1253 movff up,PLUSW0 ; set change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1254
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1255 bsf option_changed ; flag that EEPROM needs to be updated
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1256 bra comm_command_loop ; done, back to command loop
80
db920ca01491 new commands in download mode:
mh@mh-THINK.localdomain
parents: 79
diff changeset
1257
79
0fc8113ddf6d new command in download mode: "r" - read setting
mh@mh-THINK.localdomain
parents: 69
diff changeset
1258 ;-----------------------------------------------------------------------------
0fc8113ddf6d new command in download mode: "r" - read setting
mh@mh-THINK.localdomain
parents: 69
diff changeset
1259
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
1260 END