annotate src/comm.asm @ 636:2737ddc643bb

3.11 release
author heinrichsweikamp
date Mon, 25 May 2020 17:35:30 +0200
parents 4050675965ea
children 8c1f1f334275
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
heinrichsweikamp
parents:
diff changeset
1 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
2 ;
636
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
3 ; File comm.asm * combined next generation V3.10.0
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
636
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
367 command_decode 0x6C,TFT_dump_screen_comm ; l dump the screen contents
631
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 ;-----------------------------------------------------------------------------
636
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
391 ; Screendump
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
392 ;
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
393 IFDEF _screendump
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
394 TFT_dump_screen_comm:
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
395 call TFT_dump_screen ; dump the screen contents and set screen_dump_avail
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
396 ;bra comm_service_exit ; exit comm mode
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
397 ENDIF
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
398
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
399
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
400 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
401 ; Exit Comm Mode
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
402 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
403 comm_service_exit:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
404 WIN_SMALL comm_status3_column, comm_status3_row ; print "Exited" message
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
405 FONT_COLOR_MEMO ; set standard color
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
406 STRCPY_TEXT_PRINT tUsbExit ; ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
407 bra comm_service_exit_common ; acknowledge exit command and restart
0
heinrichsweikamp
parents:
diff changeset
408
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
409 comm_service_exit_nousb_delay:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
410 WAITMS d'200' ; wait 200 ms
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
411 btfsc vusb_in ; USB sensed again?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
412 bra comm_mode_selection_loop_3 ; YES - was just a glitch, continue
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
413 ;bra comm_service_exit_nousb ; NO - proceed exiting
0
heinrichsweikamp
parents:
diff changeset
414
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
415 comm_service_exit_nousb:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
416 WIN_SMALL comm_status3_column, comm_status3_row ; print "Port closed" message
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
417 FONT_COLOR_MEMO ; set standard color
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
418 STRCPY_TEXT_PRINT tUsbClosed ; ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
419 ;bra comm_service_exit_common ; proceed exiting
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
420
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
421 comm_service_exit_common:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
422 SERIAL_LC_SEND 0xFF ; acknowledge exit command
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
423 WAITS .1 ; wait 1 second to give the serial I/F time
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
424 ; to send the 0xFF before it gets shut down
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
425 call disable_rs232 ; shut down comm port
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
426 bcf LEDr ; switch off red LED
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
427 WAITS .1 ; wait 1 second for BT module supply to drain
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
428 goto restart ; restart
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
429
0
heinrichsweikamp
parents:
diff changeset
430
heinrichsweikamp
parents:
diff changeset
431 ;-----------------------------------------------------------------------------
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
432 ; Set Real-Time-Clock
0
heinrichsweikamp
parents:
diff changeset
433 ;
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
434 comm_set_time:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
435 bcf INTCON,GIE ; disable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
436 SERIAL_LC_SEND 0x62 ; acknowledge command
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
437 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
438 bsf INTCON,GIE ; re-enable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
439
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
440 btfsc rs232_rx_timeout ; got all 6 bytes?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
441 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
442
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
443 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
444 movff mpr+1,rtc_latched_mins ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
445 movff mpr+2,rtc_latched_secs ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
446 movff mpr+3,rtc_latched_month ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
447 movff mpr+4,rtc_latched_day ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
448 movff mpr+5,rtc_latched_year ; ...
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
449 call rtc_set_rtc ; write time and date to RTC module
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
450 bra comm_command_loop ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
451
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
452
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
453 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
454 ; Write a 15 char Text to the OSTC Display
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
455 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
456 comm_show_text:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
457 ; 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
458 WIN_SMALL comm_string_column, comm_string_row
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
459 FONT_COLOR_MEMO ; set standard color
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
460
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
461 bcf INTCON,GIE ; disable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
462 SERIAL_LC_SEND 0x6E ; acknowledge command
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
463 SERIAL_RR_RECEIVE buffer,.16 ; (try to) receive 16 chars into the string buffer
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
464 bsf INTCON,GIE ; re-enable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
465
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
466 movlw .15 ; set maximum text length
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
467 call TFT_buffer_trim_length ; fill or trim the text to correct length
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
468 PRINT ; print text to screen
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
469 bra comm_command_loop ; done, back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
470
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
471
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
472 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
473 ; Send Serial (2 bytes low:high), Firmware (major.minor) and Custom Text
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
474 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
475 comm_identify:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
476 SERIAL_LC_SEND 0x69 ; acknowledge command
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
477
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
478 ; send OSTC serial number
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
479 call eeprom_serial_number_read ; read OSTC serial number
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
480 SERIAL_CC_SEND mpr+0 ; send serial number, low byte
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
481 SERIAL_CC_SEND mpr+1 ; send serial number, high byte
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
482
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
483 ; send firmware version
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
484 SERIAL_LC_SEND fw_version_major ; send firmware version, major
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
485 SERIAL_LC_SEND fw_version_minor ; send firmware version, minor
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
486
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
487 ; send custom text
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
488 SERIAL_RR_SEND opt_name,opt_name_length
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
489
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
490 bra comm_command_loop ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
491
0
heinrichsweikamp
parents:
diff changeset
492
heinrichsweikamp
parents:
diff changeset
493 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
494 ; Send short Hardware Descriptor
0
heinrichsweikamp
parents:
diff changeset
495 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
496 comm_hardware_descriptor:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
497 SERIAL_LC_SEND 0x6A ; acknowledge command
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
498 rcall comm_helper_hw_descriptor ; send hardware descriptor
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
499 bra comm_command_loop ; done, back to command loop
0
heinrichsweikamp
parents:
diff changeset
500
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
501
235
23311219dacc under construction: new hardware_flag to configure different hardware versions
heinrichsweikamp
parents: 223
diff changeset
502 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
503 ; Helper Function for sending Hardware Descriptor
235
23311219dacc under construction: new hardware_flag to configure different hardware versions
heinrichsweikamp
parents: 223
diff changeset
504 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
505 comm_helper_hw_descriptor:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
506 movf HW_descriptor,W ; get hardware descriptor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
507 bcf WREG,6 ; clear bit 6 for reason of compatibility with 3rd party software
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
508 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
509 SERIAL_CC_SEND WREG ; send modified hardware descriptor
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
510 return
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
511
0
heinrichsweikamp
parents:
diff changeset
512
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
513 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
514 ; Send detailed Hardware Descriptor
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
515 ;
441
360acdcda0d7 +BUGFIX: Compatibility with "hwOS Config" fixed
heinrichsweikamp
parents: 426
diff changeset
516 comm_feature_and_hardware:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
517 SERIAL_LC_SEND 0x60 ; acknowledge command
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
518
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
519 SERIAL_LC_SEND 0x00 ; send hardware high byte (fixed zero)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
520 rcall comm_helper_hw_descriptor ; send hardware descriptor
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
521 SERIAL_LC_SEND 0x00 ; send feature high byte (fixed zero)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
522 SERIAL_LC_SEND 0x00 ; send feature low byte (fixed zero)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
523 SERIAL_LC_SEND 0x00 ; send model descriptor byte (fixed zero)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
524
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
525 bra comm_command_loop ; done, back to command loop
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
526
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
527
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
528 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
529 ; Helper Function to retrieve a Header, hide the internal Profile Version,
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
530 ; and to check if the Header is empty
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
531 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
532 comm_helper_read_header:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
533 ; copy header from FLASH into memory
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
534 call log_header_addr_by_index ; compute header start address from index in WREG
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
535 FLASH_RR_READ header_buffer,.256 ; copy from FLASH to header buffer
0
heinrichsweikamp
parents:
diff changeset
536
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
537 ; hide internal profile version ID from the outside
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
538 movff header_buffer+index_profile_version,WREG ; get byte at the profile version position
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
539 infsnz WREG,W ; was the byte = 0xFF (i.e. empty header) ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
540 return ; YES - leave it as it is (WREG now 0)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
541 decf WREG,W ; NO - restore the profile version
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
542 andlw b'00111111' ; - keep only the external part
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
543 movff WREG,header_buffer+index_profile_version ; - write back the cleaned byte
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
544 return ; - done (WREG now ext. profile version)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
545
0
heinrichsweikamp
parents:
diff changeset
546
heinrichsweikamp
parents:
diff changeset
547 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
548 ; Send Dive Headers in short or full Format
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
549 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
550 comm_send_headers_short:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
551 SERIAL_LC_SEND 0x6D ; acknowledge command
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
552 bcf aux_flag ; send short headers
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
553 bra comm_send_headers_common ; continue with common part
0
heinrichsweikamp
parents:
diff changeset
554
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
555 comm_send_headers_full:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
556 SERIAL_LC_SEND 0x61 ; acknowledge command
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
557 bsf aux_flag ; send full headers
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
558 ;bra comm_send_headers_common ; continue with common part
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
559
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
560 comm_send_headers_common:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
561 clrf ex ; start with dive having index 0
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
562
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
563 comm_send_headers_loop:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
564 movf ex,W ; get index into WREG
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
565 rcall comm_helper_read_header ; get header into header_buffer
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
566
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
567 btfss aux_flag ; shall send full headers?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
568 bra comm_send_headers_loop_short; NO - send short headers
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
569 ;bra comm_send_headers_loop_full ; YES - send full headers
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
570
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
571 comm_send_headers_loop_full:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
572 SERIAL_RR_SEND header_buffer,.256 ; send the full header
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
573 bra comm_send_headers_loop_com ; continue with common part
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
574
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
575 comm_send_headers_loop_short:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
576 ; send the fractions of the short header (16 byte/dive)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
577 SERIAL_RR_SEND header_buffer+index_profile_byte_count,.13
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
578 SERIAL_RR_SEND header_buffer+index_total_dives, .2
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
579 SERIAL_CC_SEND header_buffer+index_profile_version ; .1
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
580 ;bra comm_send_headers_loop_com ; continue with common part
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
581
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
582 comm_send_headers_loop_com:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
583 incfsz ex ; increment index, wrap-around. i.e. all dives done ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
584 bra comm_send_headers_loop ; NO - loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
585 bra comm_command_loop ; YES - done, back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
586
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
587
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
588 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
589 ; Send one full Dive
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
590 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
591 comm_send_dive:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
592 SERIAL_LC_SEND 0x66 ; acknowledge command
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
593
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
594 SERIAL_CC_RECEIVE WREG ; (try to) receive the dive index
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
595 btfsc rs232_rx_timeout ; got dive index?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
596 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
597
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
598 rcall comm_helper_read_header ; read header into header_buffer
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
599 bz comm_send_dive_exit ; abort if header contains no dive
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
600
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
601 ; get the start and end address of the profile data
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
602 MOVTT header_buffer+index_profile_start_address,ext_flash_address
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
603 MOVTT header_buffer+index_profile_end_address, ext_flash_end_pointer
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
604
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
605 ; header start code sequence present?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
606 bcf aux_flag ; default to no profile available
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 1st byte of profile data
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
609 xorlw 0xFA ; 1st 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 2nd byte of profile data
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
613 xorlw 0xFA ; 2nd 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
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
615
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
616 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
617
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
618 FLASH_CW_READ_0x20 ; get the 5th byte of profile data
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
619 xorlw 0xFA ; 5th byte = header start byte?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
620 bnz comm_send_dive_modify_header; NO - no profile data available
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
621
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
622 FLASH_CW_READ_0x20 ; get the 6th byte of profile data
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
623 xorlw 0xFA ; 6th byte = header start byte?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
624 bnz comm_send_dive_modify_header; NO - no profile data available
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
625
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
626 bsf aux_flag ; memorize profile data available
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
627 bra comm_send_dive_header ; continue with sending header
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
628
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
629 comm_send_dive_modify_header:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
630 ; set profile data start and end address to 0x000000
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
631 CLRR header_buffer+index_profile_start_address,.6
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
632
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
633 ; set hi = 0x00, lo = 0x08
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
634 MOVLI 0x0008,mpr
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
635
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
636 ; set byte count to 0x000008
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
637 movff lo,header_buffer+index_profile_byte_count+0 ; = 0x08
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
638 movff hi,header_buffer+index_profile_byte_count+1 ; = 0x00
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
639 movff hi,header_buffer+index_profile_byte_count+2 ; = 0x00
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
640
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
641 comm_send_dive_header:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
642 SERIAL_RR_SEND header_buffer,.256 ; send the header from the buffer
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
643
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
644 btfss aux_flag ; profile data available?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
645 bra comm_send_dive_empty_profile; NO - send empty profile
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
646
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
647 comm_send_dive_profile:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
648 FLASH_CW_READ_0x20 ; read one byte and increment address with rollover at 0x200000
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
649 SERIAL_CC_SEND WREG ; transmit the byte
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
650
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
651 ; 24 bit compare of current address with end address
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
652 movf ext_flash_end_pointer+0,W ; check low byte of addresses
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
653 cpfseq ext_flash_address+0 ; current address = end address ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
654 bra comm_send_dive_profile ; NO - more bytes to do, loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
655
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
656 movf ext_flash_end_pointer+1,W ; check high byte of addresses
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
657 cpfseq ext_flash_address+1 ; current address = end address ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
658 bra comm_send_dive_profile ; NO - more bytes to do, loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
659
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
660 movf ext_flash_end_pointer+2,W ; check upper byte of addresses
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
661 cpfseq ext_flash_address+2 ; current address = end address ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
662 bra comm_send_dive_profile ; NO - more bytes to do, loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
663
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
664 comm_send_dive_exit:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
665 bra comm_command_loop ; done, back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
666
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
667 comm_send_dive_empty_profile:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
668
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
669 ; send profile length
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
670 SERIAL_RR_SEND header_buffer+index_profile_byte_count,.3
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
671
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
672 SERIAL_LC_SEND 0xFD ; send end-of-profile sequence, byte 1
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
673 SERIAL_LC_SEND 0xFD ; send end-of-profile sequence, byte 2
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
674
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
675 bra comm_command_loop ; done, back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
676
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
677
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
678 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
679 ; Reset all Options to Factory Default
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
680 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
681 comm_option_reset_all:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
682 SERIAL_LC_SEND 0x78 ; acknowledge command
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
683 call option_reset_all ; reset all options to factory default
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
684 bra comm_command_loop ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
685
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
686
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
687 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
688 ; Set Custom Text (opt_name_length ASCII chars)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
689 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
690 comm_set_custom_text:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
691 CLRR opt_name,opt_name_length ; clear old custom text
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
692
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
693 bcf INTCON,GIE ; disable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
694 SERIAL_LC_SEND 0x63 ; acknowledge command
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
695 SERIAL_RR_RECEIVE opt_name,opt_name_length ; receive new custom text
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
696 bsf INTCON,GIE ; re-enable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
697 bsf option_changed ; flag that EEPROM needs to be updated
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
698
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
699 bra comm_command_loop ; done, back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
700
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
701
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
702 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
703 ; Reset Battery Gauge
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
704 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
705 comm_reset_battery_gauge:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
706 ; SERIAL_LC_SEND 0x23 ; acknowledge command (not done)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
707 call reset_battery_gauge_and_lt2942 ; reset battery registers and battery gauge chip
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
708 bra comm_command_loop ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
709
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
710
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
711 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
712 ; Erase complete Logbook
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
713 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
714 comm_erase_complete_logbook:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
715 ; SERIAL_LC_SEND 0x22 ; acknowledge command (not done)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
716 call erase_complete_logbook ; erase complete logbook
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
717 bra comm_command_loop ; done, back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
718
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
719
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
720 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
721 ; Start Bootloader (aka perform cold start)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
722 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
723 comm_cold_start:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
724 ; SERIAL_LC_SEND 0xC1 ; acknowledge command (not done)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
725
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
726 WIN_SMALL comm_status3_column, comm_status3_row ; set position
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
727 FONT_COLOR_MEMO ; set standard color
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
728 STRCPY_TEXT_PRINT tUsbLlBld ; print "Low-level Bootloader" message
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
729
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
730 WIN_TOP comm_warning_row ; set row for icon
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
731 WIN_LEFT comm_warning_column ; set column for icon
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
732 TFT_WRITE_PROM_IMAGE_BY_LABEL dive_warning2_block ; show a warning icon
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
733
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
734 bsf LEDr ; switch on red LED
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
735
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
736 call eeprom_deco_data_write ; update deco data in EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
737 call eeprom_battery_gauge_write ; update battery gauge in EEPROM
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
738 btfsc option_changed ; do the options need to be stored to EEPROM ?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
739 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
740
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
741 ; WAITS .1 ; wait 1 second to give the serial I/F time
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
742 ; ; to send the ackn before it gets shut down
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
743
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
744 goto 0x1FF0C ; jump into the bootloader code for cold start
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
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
747 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
748 ; Send Firmware to Bootloader (aka initiate Firmware Update)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
749 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
750 comm_firmware_update:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
751 bcf INTCON,GIE ; disable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
752 SERIAL_LC_SEND 0x50 ; acknowledge command
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
753 SERIAL_RR_RECEIVE buffer,.5 ; (try to) receive 5 byte checksum
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
754 bsf INTCON,GIE ; re-enable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
755
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
756 btfsc rs232_rx_timeout ; got all 5 bytes?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
757 bra comm_send_firmware_abort ; NO - abort
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
758
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
759 ; check the checksum
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
760 movlw 0x55 ; initialize checksum check-byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
761 movwf hi ; store in hi
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
762 INIT_BUFFER ; go back to start of the buffer
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
763 movlw .5 ; 5 bytes to process
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
764 movwf lo ; initialize loop counter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
765 comm_firmware_update_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
766 movf POSTINC2,W ; get a checksum byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
767 xorwf hi,F ; xor checksum byte with check-byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
768 rlncf hi,F ; rotate check-byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
769 decfsz lo,F ; decrement loop counter, done?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
770 bra comm_firmware_update_loop ; NO - loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
771 tstfsz hi ; YES - check-byte zero?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
772 bra comm_send_firmware_failed ; NO - checksum not valid
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
773
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
774 ; checksum is valid
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
775 SERIAL_LC_SEND 0x4C ; inform checksum is ok
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
776 WAITS .1 ; wait 1 second to give the serial I/F time
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
777 ; to send the 0x4C before it gets shut down
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
778 ;bra comm_firmware_update_exec ; execute update
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
779
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
780 global comm_firmware_update_exec
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
781 comm_firmware_update_exec:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
782 call eeprom_memorize_fw_checksum ; memorize fw checksum in EEPROM
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
783 call eeprom_deco_data_write ; update deco data in EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
784 call eeprom_battery_gauge_write ; update battery gauge in EEPROM
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
785 btfsc option_changed ; do the options need to be stored to EEPROM ?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
786 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
787 goto 0x1FDF0 ; jump into the bootloader code for firmware update
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
788
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
789
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
790 comm_send_firmware_failed:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
791 ; select font and output position
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
792 WIN_SMALL comm_string_column, comm_string_row
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
793 FONT_COLOR_WARNING ; set warning color
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
794 STRCPY_PRINT "Checksum failed" ; print failure message (fill to 15 chars)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
795 ;bra comm_send_firmware_abort ; abort
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
796
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
797 comm_send_firmware_abort:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
798 SERIAL_LC_SEND 0xFF ; send checksum failure message
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
799 bra comm_command_loop ; done, back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
800
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
801
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
802 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
803 ; Erase a single Block or a Range of Blocks
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
804 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
805 comm_erase_single_4kb:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
806 bcf INTCON,GIE ; disable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
807 bcf aux_flag ; do a single block only
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
808 ; SERIAL_LC_SEND 0x40 ; acknowledge command (not done)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
809 bra comm_erase_get_start ; continue with getting start address
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
810
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
811 comm_erase_range_4kb:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
812 bcf INTCON,GIE ; disable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
813 bsf aux_flag ; do a range of blocks
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
814 SERIAL_LC_SEND 0x42 ; acknowledge command
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
815 ;bra comm_erase_get_start ; continue with getting start address
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_start:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
818 rcall comm_get_start_address ; (try to) get the start address
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
819 btfsc rs232_rx_timeout ; got start address?
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 btfsc aux_flag ; YES - shall erase a range of blocks?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
822 bra comm_erase_get_count ; YES - get the block count
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
823 movlw .1 ; NO - set 1 block to do
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
824 movwf WREG ; - ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
825 bra comm_erase_common ; - start the erasing
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
826
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
827 comm_erase_get_count:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
828 SERIAL_CC_RECEIVE WREG ; (try to) receive the block count
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
829 btfsc rs232_rx_timeout ; got block count?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
830 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
831 tstfsz WREG ; YES - block count = 0 ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
832 bra comm_erase_common ; NO - start the erasing
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
833 bra comm_command_error ; YES - invalid, show error message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
834
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
835 comm_erase_common:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
836 bsf INTCON,GIE ; re-enable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
837 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
838 bra comm_command_loop ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
839
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
840
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
841 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
842 ; 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
843 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
844 comm_write_range_stream:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
845 bcf INTCON,GIE ; disable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
846 SERIAL_LC_SEND 0x30 ; acknowledge command
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
847
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
848 rcall comm_get_start_address ; (try to) get the start address
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
849 btfsc rs232_rx_timeout ; got a complete start address?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
850 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
851
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
852 IFDEF _comm_debug
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
853 CLRI mpr ; clear mpr to be used as a 16 bit counter
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
854 ENDIF
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
855
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
856 comm_write_range_stream_loop:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
857 SERIAL_CC_RECEIVE WREG ; (try to) receive one byte
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
858 btfsc rs232_rx_timeout ; got a byte?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
859 IFNDEF _comm_debug
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
860 bra comm_command_loop ; NO - timeout, done, back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
861 ELSE
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
862 bra comm_command_debug ; NO - timeout, done, show number of bytes received
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
863 ENDIF
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
864 ; 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
865 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
866 ; bcf NCTS ; - release Bluetooth chip (requires PC/Android/iOS side to use flow control...)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
867 IFDEF _comm_debug
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
868 INCI mpr ; increment counter
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
869 ENDIF
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
870 bra comm_write_range_stream_loop ; - loop
157
5ee76921e359 make new parameters configurable through pc
heinrichsweikamp
parents: 150
diff changeset
871
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
872
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
873 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
874 ; 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
875 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
876 comm_write_range_block:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
877 bcf INTCON,GIE ; disable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
878 SERIAL_LC_SEND 0x31 ; acknowledge command
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
879
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
880 rcall comm_get_start_address ; (try to) get the start address
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
881 btfsc rs232_rx_timeout ; got a complete start address?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
882 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
883
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
884 tstfsz ext_flash_address+0 ; low byte of start address = 0 ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
885 bra comm_command_error ; NO - show error message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
886
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
887 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
888 bsf INTCON,GIE ; re-enable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
889 btfsc rs232_rx_timeout ; got all 256 bytes?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
890 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
891
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
892 FLASH_RR_WRITE buffer,.256 ; copy from memory to FLASH
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
893 bra comm_command_loop ; done, back to command loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
894
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
895
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
896 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
897 ; 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
898 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
899 comm_read_range:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
900 bcf INTCON,GIE ; disable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
901 SERIAL_LC_SEND 0x20 ; acknowledge command
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
902
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
903 ; receive start address
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
904 rcall comm_get_start_address ; (try to) get the start address
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
905 btfsc rs232_rx_timeout ; got a complete start address?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
906 bra comm_command_timeout ; NO - show rx timeout message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
907
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
908 ; receive byte count
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
909 rcall comm_get_length ; (try to) get the byte count
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
910 btfsc rs232_rx_timeout ; got a complete byte count?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
911 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
912
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
913 bsf INTCON,GIE ; re-enable all interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
914
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
915 ; 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
916 EXT_FLASH_DEC_LENGTH
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
917
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
918 ; check validity of the byte count
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
919 movlw 0x40 ; now the byte count is allowed to be 0x3FFFFF at max
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
920 cpfslt ext_flash_length_counter+2 ; length count < 0x40(0000) ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
921 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
922
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
923 ; stream bytes from FLASH
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
924 call ext_flash_read_block_start ; read first byte from FLASH into WREG
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
925 bra comm_read_range_loop_start ; jump into transmit loop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
926 comm_read_range_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
927 call ext_flash_read_block_0x40 ; read next byte into WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
928 comm_read_range_loop_start:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
929 SERIAL_CC_SEND WREG ; transmit byte
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
930 EXT_FLASH_DEC_LENGTH ; decrement byte counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
931 btfss ext_flash_length_counter+2,7; under-run?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
932 bra comm_read_range_loop ; NO - continue loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
933 call ext_flash_read_block_stop ; YES - end reading from FLASH
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
934 bra comm_command_loop ; - done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
935
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
936
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
937 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
938 ; 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
939 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
940 comm_get_start_address:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
941 SERIAL_RR_RECEIVE ext_flash_address,.3 ; (try to) receive 3 bytes
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
942 btfsc rs232_rx_timeout ; timeout?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
943 return ; YES - abort, no usable address available
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
944
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
945 ; remap address from network byte format (big endian) to host format (little-endian)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
946 movf ext_flash_address+0,W
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
947 movff ext_flash_address+2,ext_flash_address+0
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
948 movwf ext_flash_address+2
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
949
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
950 return ; done, complete start address available
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
951
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
952
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
953 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
954 ; Receive a 3 byte length (on serial: big-endian, in memory: little-endian)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
955 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
956 comm_get_length:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
957 SERIAL_RR_RECEIVE ext_flash_length_counter,.3 ; receive 3 bytes
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
958 btfsc rs232_rx_timeout ; timeout?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
959 return ; YES - abort, no usable address available
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
960
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
961 ; remap address from network byte format (big endian) to host format (little-endian)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
962 movf ext_flash_length_counter+0,W
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
963 movff ext_flash_length_counter+2,ext_flash_length_counter+0
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
964 movwf ext_flash_length_counter+2
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
965
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
966 return ; done, complete start address available
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
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
969 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
970 ; Read an Option Value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
971 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
972 comm_read_option:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
973 SERIAL_LC_SEND 0x72 ; acknowledge command
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
974 SERIAL_CC_RECEIVE lo ; (try to) receive option index
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
975 btfsc rs232_rx_timeout ; received option index?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
976 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
977
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
978 ; option index 0x00 - 0x0F: unused
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
979 movlw 0x0F ; last option index of the unused range
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
980 cpfsgt lo ; received option index > end of unused range ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
981 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
982
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
983 ; option index 0x10 - 0x19: gases & diluents
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
984 movlw 0x19 ; last option index for gases / diluents
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
985 cpfsgt lo ; received option index > end of gas/dil range ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
986 bra comm_read_gas_dil ; NO - process gas/dil read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
987
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
988 ; option index 0x1A - 0x1E: setpoints
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
989 movlw 0x1E ; last option index for setpoint
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
990 cpfsgt lo ; received option index > end of setpoint range ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
991 bra comm_read_sp ; NO - process setpoint read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
992
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
993 ; option index = 0x49 - special handling button polarity
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
994 movf lo,W ; copy option index to WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
995 iorlw 0x49 ; received option index for button polarity ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
996 bz comm_read_button_polarity ; YES - process button polarity read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
997
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
998 ; option index 0x1F - 0xF9: options managed by option table
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
999 movlw 0xF9 ; last option index for options
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1000 cpfsgt lo ; received option index > end of options range?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1001 bra comm_read_option_index ; YES - process option value read via index
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1002
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1003 bra comm_command_error ; NO - illegal option index
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1004
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1005
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1006 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1007 ; Write an Option Value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1008 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1009 comm_write_option:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1010 bcf INTCON,GIE ; disable all interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1011 SERIAL_LC_SEND 0x77 ; acknowledge command
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1012 SERIAL_CC_RECEIVE lo ; (try to) receive option index
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1013 btfsc rs232_rx_timeout ; got a byte?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1014 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
1015
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1016 ; option index 0x00 - 0x0F: unused
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1017 movlw 0x0F ; last option index of the unused range
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1018 cpfsgt lo ; received option index > end of unused range ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1019 bra comm_write_unused ; NO - but need to consume the option value
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 0x10 - 0x19: gases & diluents
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1022 movlw 0x19 ; last option index for gases / diluents
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1023 cpfsgt lo ; received option index > end of gas/dil range ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1024 bra comm_write_gas_dil ; NO - process gas/dil write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1025
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1026 ; option index 0x1A - 0x1E: setpoints
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1027 movlw 0x1E ; last option index for setpoint
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1028 cpfsgt lo ; received option index > end of setpoint range ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1029 bra comm_write_sp ; NO - process setpoint write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1030
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1031 ; option index = 0x49 - special handling button polarity
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1032 movf lo,W ; copy option index to WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1033 iorlw 0x49 ; received option index for button polarity ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1034 bz comm_write_button_polarity ; YES - process button polarity write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1035
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1036 ; option index 0x1F - 0xF9: options managed by option table
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1037 movlw 0xF9 ; last option index for options
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1038 cpfsgt lo ; received option index > end of options range?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1039 bra comm_write_option_index ; YES - process option value write via index
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1040
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1041 bra comm_write_unused ; NO - illegal option index
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1042
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1043
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1044 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1045 ; Read an Option Value via its Serial Index
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1046 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1047 comm_read_option_index:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1048 call option_read_serial ; try to find the option and read its value
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1049 tstfsz WREG ; option found?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1050 bra comm_read_setting_fail ; NO - send dummy value
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1051 SERIAL_CC_SEND hi ; YES - send read value
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1052 bra comm_command_loop ; - done, back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1053
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1054 comm_read_setting_fail:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1055 SERIAL_LC_SEND 0x00 ; send a dummy value
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1056 bra comm_command_error ; back to command loop with failure message
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1057
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1058
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1059 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1060 ; Write an Option Value via its Serial Index
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1061 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1062 comm_write_option_index:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1063 SERIAL_CC_RECEIVE hi ; (try to) receive option value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1064 btfsc rs232_rx_timeout ; got a byte?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1065 bra comm_command_timeout ; NO - abort
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1066 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
1067 tstfsz WREG ; - option found and new value valid ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1068 bra comm_command_error ; NO - back to command loop with failure message
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1069 bra comm_command_loop ; YES - done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1070
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1071 comm_write_unused:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1072 SERIAL_CC_RECEIVE WREG ; consume unused option value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1073 bra comm_command_error ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1074
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1075
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1076 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1077 ; Read Button Polarity
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1078 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1079 comm_read_button_polarity:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1080 SERIAL_CC_SEND button_polarity ; send current button polarity setting
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1081 bra comm_command_loop ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1082
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1083
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1084 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1085 ; Write Button Polarity
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1086 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1087 comm_write_button_polarity:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1088 SERIAL_CC_RECEIVE hi ; (try to) receive configuration value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1089 btfsc rs232_rx_timeout ; got configuration value?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1090 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
1091 movff hi,button_polarity ; YES - store button polarity in memory and EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1092 EEPROM_CC_WRITE button_polarity,eeprom_button_polarity
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1093 bra comm_command_loop ; - done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1094
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1095
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1096 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1097 ; Read a Gas/Diluent Dataset
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1098 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1099 ; memory map is as follows:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1100 ; -------------------------
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1101 ; 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
1102 ; 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
1103 ; 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
1104 ; 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
1105 ; opt_gas_type res 5 ; OC/bailout gas type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1106 ; opt_dil_type res 5 ; dil type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1107 ; 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
1108 ; opt_dil_change res 5 ; change depths for diluents
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1109 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1110 comm_read_gas_dil:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1111 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
1112 movlw 0x10 ; compute gas index from option index...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1113 subwf lo,W ; ...making WREG point to O2 ratio
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1114 SERIAL_CC_SEND PLUSW0 ; send O2 ratio
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1115 addlw .10 ; increment WREG by 10 to point to He ratio
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1116 SERIAL_CC_SEND PLUSW0 ; send He ratio
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1117 addlw .10 ; increment WREG by 10 to point to gas/diluent type
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1118 SERIAL_CC_SEND PLUSW0 ; send gas/diluent type
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1119 addlw .10 ; increment WREG by 10 to point to change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1120 SERIAL_CC_SEND PLUSW0 ; send change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1121 bra comm_command_loop ; done, back to command loop
110
d39493c786a2 BUGFIX: OSTC settings via USB issues
heinrichsweikamp
parents: 97
diff changeset
1122
79
0fc8113ddf6d new command in download mode: "r" - read setting
mh@mh-THINK.localdomain
parents: 69
diff changeset
1123
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1124 ; ----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1125 ; Write a Gas/Diluent Dataset
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1126 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1127 ; memory map is as follows:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1128 ; -------------------------
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1129 ; 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
1130 ; 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
1131 ; 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
1132 ; 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
1133 ; opt_gas_type res 5 ; OC/bailout gas type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1134 ; opt_dil_type res 5 ; dil type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1135 ; 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
1136 ; opt_dil_change res 5 ; change depths for diluents
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1137 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1138 comm_write_gas_dil:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1139 SERIAL_RR_RECEIVE hi,.4 ; (try to) receive 4 option values
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1140 btfsc rs232_rx_timeout ; got all 4 bytes?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1141 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
1142
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1143 ; check validity of O2 value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1144 movlw gaslist_min_o2-.1 ; get min value minus 1
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1145 cpfsgt hi ; received O2% >= min ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1146 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
1147 movlw gaslist_max_o2+.1 ; get max value plus 1
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1148 cpfslt hi ; received O2% <= max ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1149 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
1150
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1151 ; check validity of He value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1152 movlw gaslist_max_He+.1 ; get max value plus 1
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1153 cpfslt up ; received O2% <= max ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1154 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
1155
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1156 IFDEF _helium
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1157 ; check O2% + He% <= 100%
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1158 movlw .100 ; load WREG with 100%
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1159 bsf STATUS,C ; set carry = clear borrow
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1160 subfwb hi,W ; subtract O2% from WREG
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1161 subfwb up,W ; subtract He% from WREG
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1162 btfss STATUS,C ; result negative?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1163 bra comm_command_error ; YES - show error message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1164 ENDIF ; _helium
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1165
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1166 ; check validity of type
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1167 movlw 0x14 ; last option index for gases
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1168 cpfsgt lo ; received option index > end of gas range ?
636
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
1169 bra comm_write_check_gas ; NO - check type for gases
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
1170 ;bra comm_write_check_dil ; YES - check type for diluents
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
1171
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
1172 comm_write_check_dil:
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
1173 ; check validity of type for a diluent
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
1174 movlw num_dil_types ; load number of diluent types
2737ddc643bb 3.11 release
heinrichsweikamp
parents: 634
diff changeset
1175 bra comm_write_check_com ; continue with common part
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1176
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1177 comm_write_check_gas:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1178 ; check validity of type for a gas
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1179 movlw num_gas_types ; load number of gas types
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1180 ;bra comm_write_check_com ; continue with common part
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1181
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1182 comm_write_check_com:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1183 cpfslt ex ; received type < max ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1184 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
1185
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1186 ; check validity of change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1187 movlw gaslist_max_change_depth+.1 ; get max value plus 1
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1188 cpfslt ul ; received change depth <= max ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1189 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
1190
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1191 ; all values ok, can finally be written
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1192 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
1193 movlw 0x10 ; compute gas index from option index...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1194 subwf lo,W ; ...making WREG point to O2 ratio
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1195
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1196 movff hi,PLUSW0 ; set O2 ratio
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1197 addlw .10 ; increment WREG by 10 to point to He ratio
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1198 movff up,PLUSW0 ; set He ratio
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1199 addlw .10 ; increment WREG by 10 to point to gas/dil type
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1200 movff ex,PLUSW0 ; set gas/dil type
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1201 addlw .10 ; increment WREG by 10 to point to change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1202 movff ul,PLUSW0 ; set change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1203
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1204 bsf option_changed ; flag that EEPROM needs to be updated
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1205 bra comm_command_loop ; done, back to command loop
80
db920ca01491 new commands in download mode:
mh@mh-THINK.localdomain
parents: 79
diff changeset
1206
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1207
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1208 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1209 ; Read a Setpoint Dataset
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1210 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1211 ; memory map is as follows:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 593
diff changeset
1212 ; -------------------------
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
1213 ; opt_setpoint_cbar res 5 ; setpoints in cbar
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
1214 ; opt_setpoint_change res 5 ; change depth for the setpoints in meter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1215 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1216 comm_read_sp:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
1217 lfsr FSR0,opt_setpoint_cbar ; load base address of setpoint cbar values
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1218 movlw 0x1A ; compute SP index from option index...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1219 subwf lo,W ; ...making WREG point to cbar value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1220 SERIAL_CC_SEND PLUSW0 ; send setpoint cbar value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1221 addlw .5 ; increment WREG by 5 to point to change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1222 SERIAL_CC_SEND PLUSW0 ; send change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1223 bra comm_command_loop ; done, back to command loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1224
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1225
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1226 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1227 ; Write a Setpoint Dataset
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1228 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1229 ; memory map is as follows:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1230 ; -------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1231 ; opt_setpoint_cbar res 5 ; setpoints in cbar
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1232 ; opt_setpoint_change res 5 ; change depths in meter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1233 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1234 comm_write_sp:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1235 SERIAL_RR_RECEIVE hi,.2 ; (try to) receive 2 option values
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1236 btfsc rs232_rx_timeout ; got both bytes?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1237 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
1238
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1239 ; check validity of setpoint value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1240 movlw gaslist_sp_min-.1 ; get min value minus 1
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1241 cpfsgt hi ; received O2% >= min ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1242 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
1243 movlw gaslist_sp_max+.1 ; get max value plus 1
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1244 cpfslt hi ; received O2% <= max ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1245 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
1246
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1247 ; check validity of change depth
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1248 movlw gaslist_sp_max_depth+.1 ; get max value plus 1
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1249 cpfslt up ; received change depth <= max ?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1250 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
1251
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1252 lfsr FSR0,opt_setpoint_cbar ; load base address of setpoint cbar values
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1253 movlw 0x1A ; compute SP index from option index...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1254 subwf lo,W ; ...making WREG point to cbar value
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1255
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1256 bnz comm_write_sp_exec ; selected SP is 2...5 -> execute write
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1257 tstfsz up ; SP1: change depth = 0 ?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1258 bra comm_command_error ; NO - show error message and back to command loop
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1259
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1260 comm_write_sp_exec:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1261 movff hi,PLUSW0 ; set cbar value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1262 addlw .5 ; increment WREG by 5 to point to change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1263 movff up,PLUSW0 ; set change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1264
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
1265 bsf option_changed ; flag that EEPROM needs to be updated
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1266 bra comm_command_loop ; done, back to command loop
80
db920ca01491 new commands in download mode:
mh@mh-THINK.localdomain
parents: 79
diff changeset
1267
79
0fc8113ddf6d new command in download mode: "r" - read setting
mh@mh-THINK.localdomain
parents: 69
diff changeset
1268 ;-----------------------------------------------------------------------------
0fc8113ddf6d new command in download mode: "r" - read setting
mh@mh-THINK.localdomain
parents: 69
diff changeset
1269
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
1270 END