annotate src/comm.asm @ 642:a9a0188091e4

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