Mercurial > public > ostc4
annotate BootLoader/Src/tComm_mini.c @ 1016:0dd92e9b70a2 BootloaderOstc5
Bootloader use compressed fonts:
The previous Bootloader was larger than 128k => not fitting into the first sectors of the second flash bank. Most memory is occupied by the two fonts in use. In order to make the bootloader small enough for the bootloader update function the fonts need to be compressed. To avoid code changes in visualization functions the compressed fonts are decompressed into RAM and then used in the same way as before.
| author | Ideenmodellierer |
|---|---|
| date | Wed, 28 May 2025 17:20:44 +0200 |
| parents | f1b78bc8de10 |
| children | 9d9d506a82d3 |
| rev | line source |
|---|---|
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1 /////////////////////////////////////////////////////////////////////////////// |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
2 /// -*- coding: UTF-8 -*- |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
3 /// |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
4 /// \file Discovery/Src/tComm.c |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
5 /// \brief Main file for communication reduced to needs of the bootloader |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
6 /// \author heinrichs weikamp gmbh |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
7 /// \date 29-Mar-2025 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
8 /// |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
9 /// \details |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
10 /// |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
11 /// $Id$ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
12 /////////////////////////////////////////////////////////////////////////////// |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
13 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
14 /// |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
15 /// This program is free software: you can redistribute it and/or modify |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
16 /// it under the terms of the GNU General Public License as published by |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
17 /// the Free Software Foundation, either version 3 of the License, or |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
18 /// (at your option) any later version. |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
19 /// |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
20 /// This program is distributed in the hope that it will be useful, |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
21 /// but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
22 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
23 /// GNU General Public License for more details. |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
24 /// |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
25 /// You should have received a copy of the GNU General Public License |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
26 /// along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
27 ////////////////////////////////////////////////////////////////////////////// |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
28 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
29 /** |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
30 ============================================================================== |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
31 ##### How to use ##### |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
32 ============================================================================== |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
33 ============================================================================== |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
34 ##### History ##### |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
35 ============================================================================== |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
36 160211 added 4 bytes Serial in update Files after checksum prior to binary |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
37 160211 0x6B changed to version only |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
38 160623 fixed 0x72 (in V1.0.9) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
39 160623 fixed rebuild menu (before update) for V1.0.10 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
40 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
41 ============================================================================== |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
42 ##### CTS / RTS ##### |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
43 ============================================================================== |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
44 RTS is Output, CTS is Input |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
45 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
46 BlueMod Pin D7 UART-RTS# is Output |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
47 connected to STM32F429 PA11 CTS (Input) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
48 also STM32 PA12 RTS is connected to BlueMod UART-CTS# F3 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
49 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
50 see BlueMod_SR_HWreference_r06.pdf, page 156 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
51 and MAIN_CPU STM32F4 Reference manual DM00031020.pdf, page 990 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
52 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
53 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
54 ============================================================================== |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
55 ##### Codes ##### |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
56 ============================================================================== |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
57 [0x73] upload CPU2 firmware in SDRAM and update CPU2 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
58 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
59 [0x74] upload MainCPU firmware in EEPROM and start bootloader |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
60 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
61 */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
62 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
63 /* Includes ------------------------------------------------------------------*/ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
64 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
65 #include "tComm.h" |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
66 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
67 #include "externCPU2bootloader.h" |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
68 #include "externLogbookFlash.h" |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
69 #include "gfx_colors.h" |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
70 #include "gfx_engine.h" |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
71 #include "gfx_fonts.h" |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
72 #include "ostc.h" |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
73 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
74 #include "base_bootloader.h" |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
75 #include "firmwareEraseProgram.h" |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
76 #include "text_multilanguage.h" |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
77 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
78 #ifdef SPECIALPROGRAMM |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
79 # include "firmwareEraseProgram.h" |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
80 #endif |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
81 #include <stdlib.h> |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
82 #include <string.h> |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
83 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
84 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
85 /* Private variables ---------------------------------------------------------*/ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
86 GFX_DrawCfgScreen tCscreen; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
87 GFX_DrawCfgWindow tCwindow; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
88 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
89 uint8_t receiveStartByteUart = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
90 uint8_t bluetoothActiveLastTime = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
91 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
92 uint8_t StartListeningToUART = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
93 char display_text[256] = { 0 }; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
94 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
95 uint8_t setForcedBluetoothName = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
96 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
97 uint8_t updateSettingsAndMenuOnExit = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
98 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
99 /* Private types -------------------------------------------------------------*/ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
100 #define BYTE_DOWNLOAD_MODE (0xBB) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
101 #define BYTE_SERVICE_MODE (0xAA) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
102 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
103 #define UART_OPERATION_TIMEOUT (500u) /* Timeout for common read / write operations (ms) */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
104 #define UART_TIMEOUT_SECONDS (120u) /* Timeout for keeping connection open and waiting for data */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
105 #define UART_TIMEOUT_LARGE_BLOCK (6000u) /* Timeout (ms) for reception of an 16K data block (typical RX time ~4,5seconds) */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
106 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
107 #define UART_CMD_BUF_SIZE (30u) /* size of buffer for command exchange */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
108 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
109 const uint8_t id_Region1_firmware = 0xFF; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
110 const uint8_t id_RTE = 0xFE; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
111 const uint8_t id_FONT = 0x10; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
112 const uint8_t id_FONT_OLD = 0x00; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
113 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
114 static BlueModTmpConfig_t BmTmpConfig = BM_CONFIG_OFF; /* Config BlueMod without storing the changes */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
115 static uint8_t EvaluateBluetoothSignalStrength = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
116 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
117 /* Private function prototypes -----------------------------------------------*/ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
118 static void tComm_Error_Handler(void); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
119 static uint8_t select_mode(uint8_t aRxByte); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
120 static uint8_t tComm_CheckAnswerOK(void); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
121 static uint8_t tComm_HandleBlueModConfig(void); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
122 static void tComm_EvaluateBluetoothStrength(void); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
123 uint8_t receive_update_flex(uint8_t isRTEupdateALLOWED); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
124 uint8_t receive_update_data_flex(uint8_t* pBuffer1, uint8_t* pBuffer2, uint8_t RTEupdateALLOWED); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
125 uint8_t receive_update_data_mainCPU_firmware(void); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
126 uint8_t receive_update_data_mainCPU_variable_firmware(void); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
127 uint8_t receive_update_data_mainCPU_firmware_subroutine(uint8_t region, uint8_t* pBuffer1, uint8_t* pBuffer2); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
128 HAL_StatusTypeDef receive_uart_large_size(UART_HandleTypeDef *huart, uint8_t *pData, uint32_t Size); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
129 static uint8_t openComm(uint8_t aRxByte); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
130 uint8_t HW_Set_Bluetooth_Name(uint16_t serial, uint8_t withEscapeSequence); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
131 uint8_t prompt4D4C(uint8_t mode); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
132 uint8_t tComm_GetBTCmdStr(BTCmd cmdId, char* pCmdStr); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
133 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
134 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
135 static uint8_t receive_update_data_cpu2(void); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
136 uint8_t receive_update_data_cpu2_sub(uint8_t* pBuffer); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
137 |
| 1003 | 138 |
| 139 /* #define OSTC4_HW */ | |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
140 /* Exported functions --------------------------------------------------------*/ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
141 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
142 void tComm_init(void) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
143 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
144 tCscreen.FBStartAdress = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
145 tCscreen.ImageHeight = 480; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
146 tCscreen.ImageWidth = 800; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
147 tCscreen.LayerIndex = 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
148 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
149 tCwindow.Image = &tCscreen; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
150 tCwindow.WindowNumberOfTextLines = 6; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
151 tCwindow.WindowLineSpacing = 65; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
152 tCwindow.WindowTab = 400; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
153 tCwindow.WindowX0 = 20; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
154 tCwindow.WindowX1 = 779; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
155 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
156 tCwindow.WindowY0 = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
157 tCwindow.WindowY1 = 479; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
158 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
159 StartListeningToUART = 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
160 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
161 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
162 uint8_t tComm_control(void) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
163 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
164 uint8_t answer = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
165 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
166 if(BmTmpConfig != BM_CONFIG_DONE) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
167 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
168 tComm_HandleBlueModConfig(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
169 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
170 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
171 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
172 /*##-2- Put UART peripheral in reception process ###########################*/ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
173 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
174 if((UartReady == RESET) && StartListeningToUART) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
175 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
176 StartListeningToUART = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
177 if(HAL_UART_Receive_IT(&UartHandle, &receiveStartByteUart, 1) != HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
178 tComm_Error_Handler(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
179 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
180 /* Reset transmission flag */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
181 if(UartReady == SET) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
182 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
183 UartReady = RESET; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
184 if((receiveStartByteUart == BYTE_DOWNLOAD_MODE) || (receiveStartByteUart == BYTE_SERVICE_MODE)) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
185 answer = openComm(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
186 StartListeningToUART = 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
187 return answer; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
188 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
189 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
190 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
191 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
192 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
193 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
194 void tComm_refresh(void) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
195 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
196 char localString[255]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
197 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
198 if(tCscreen.FBStartAdress == 0) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
199 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
200 GFX_hwBackgroundOn(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
201 tCscreen.FBStartAdress = getFrame(18); |
| 1016 | 202 write_content_simple(&tCscreen, 0, 800, 480-24, &FontT24min,"Exit",CLUT_ButtonSurfaceScreen); |
| 203 write_content_simple(&tCscreen, 800 - 70, 800, 480-24, &FontT24min,"Signal",CLUT_ButtonSurfaceScreen); | |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
204 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
205 if(receiveStartByteUart == BYTE_SERVICE_MODE) |
| 1016 | 206 GFX_write_string(&FontT48min, &tCwindow, "Service mode enabled",2); |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
207 else |
| 1016 | 208 GFX_write_string(&FontT48min, &tCwindow, "Download mode enabled",2); |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
209 GFX_SetFramesTopBottom(tCscreen.FBStartAdress, 0,480); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
210 display_text[0] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
211 display_text[255] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
212 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
213 else if(display_text[255]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
214 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
215 display_text[(uint8_t)display_text[255]] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
216 localString[0] = TXT_MINIMAL; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
217 strcpy (&localString[1],display_text); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
218 releaseFrame(18,tCscreen.FBStartAdress); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
219 tCscreen.FBStartAdress = getFrame(18); |
| 1016 | 220 write_content_simple(&tCscreen, 0, 800, 480-24, &FontT24min,"Exit",CLUT_ButtonSurfaceScreen); |
| 221 write_content_simple(&tCscreen, 800 - 70, 800, 480-24, &FontT24min,"Signal",CLUT_ButtonSurfaceScreen); | |
| 222 GFX_write_string(&FontT48min, &tCwindow, localString,2); | |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
223 GFX_SetFrameTop(tCscreen.FBStartAdress); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
224 display_text[0] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
225 display_text[255] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
226 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
227 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
228 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
229 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
230 void tComm_verlauf(uint8_t percentage_complete) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
231 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
232 uint32_t pDestination; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
233 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
234 pDestination = (uint32_t)tCscreen.FBStartAdress; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
235 pDestination += 150 * tCscreen.ImageHeight * 2; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
236 pDestination += 100 * 2; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
237 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
238 if(percentage_complete > 100) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
239 percentage_complete = 100; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
240 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
241 int i = 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
242 while(i<=percentage_complete) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
243 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
244 i += 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
245 for(int y=0;y<4;y++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
246 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
247 for(int x=0;x<40;x++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
248 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
249 *(__IO uint16_t*)pDestination = 0xFF00 + 00; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
250 pDestination += 2; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
251 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
252 pDestination += (tCscreen.ImageHeight - 40 )* 2; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
253 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
254 pDestination += tCscreen.ImageHeight * 2; // one spare line |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
255 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
256 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
257 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
258 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
259 void tComm_exit(void) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
260 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
261 SStateList status; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
262 get_globalStateList(&status); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
263 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
264 releaseFrame(18,tCscreen.FBStartAdress); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
265 tCscreen.FBStartAdress = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
266 GFX_hwBackgroundOff(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
267 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
268 if(setForcedBluetoothName) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
269 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
270 setForcedBluetoothName = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
271 MX_Bluetooth_PowerOff(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
272 HAL_Delay(1000); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
273 MX_Bluetooth_PowerOn(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
274 tComm_Set_Bluetooth_Name(1); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
275 tComm_StartBlueModConfig(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
276 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
277 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
278 updateSettingsAndMenuOnExit = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
279 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
280 if(status.base == BaseComm) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
281 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
282 set_globalState_Base(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
283 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
284 MX_Bluetooth_PowerOff(); // Power down Bluetooth on the way out |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
285 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
286 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
287 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
288 uint8_t tComm_Set_Bluetooth_Name(uint8_t force) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
289 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
290 uint8_t answer = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
291 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
292 if(hardwareDataGetPointer()->secondarySerial != 0xFFFF) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
293 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
294 if(force || (hardwareDataGetPointer()->secondary_bluetooth_name_set == 0xFF)) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
295 answer = HW_Set_Bluetooth_Name(hardwareDataGetPointer()->secondarySerial, 0); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
296 if(answer == HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
297 hardware_programmSecondaryBluetoothNameSet(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
298 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
299 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
300 if(hardwareDataGetPointer()->primarySerial != 0xFFFF) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
301 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
302 if(force || (hardwareDataGetPointer()->production_bluetooth_name_set == 0xFF)) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
303 answer = HW_Set_Bluetooth_Name(hardwareDataGetPointer()->primarySerial, 0); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
304 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
305 if(answer == HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
306 hardware_programmPrimaryBluetoothNameSet(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
307 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
308 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
309 else /* no serial set at all => do default configuration of the module */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
310 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
311 #define NINAB22103B00 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
312 #ifdef NINAB22103B00 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
313 answer = 0xFF; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
314 #endif |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
315 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
316 return answer; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
317 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
318 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
319 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
320 uint8_t HW_Set_Bluetooth_Name(uint16_t serial, uint8_t withEscapeSequence) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
321 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
322 uint8_t answer = HAL_OK; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
323 uint8_t aRxBuffer[50]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
324 char aTxBufferName[50]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
325 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
326 // char aTxFactoryDefaults[50] = "AT&F1\r"; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
327 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
328 char aTxBufferEscapeSequence[50] = "+++"; /* factory default */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
329 // limit is 19 chars, with 7 chars shown in BLE advertising mode |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
330 //________________________123456789012345678901 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
331 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
332 tComm_GetBTCmdStr(BT_CMD_NAME, aTxBufferName); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
333 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
334 char answerOkay[6] = "\r\nOK\r\n"; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
335 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
336 gfx_number_to_string(5,1,&aTxBufferName[15],serial); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
337 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
338 // store active configuration in non-volatile memory |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
339 char aTxBufferWrite[50] = "AT&W\r"; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
340 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
341 // char aTxBufferReset[50] = "AT+RESET\r"; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
342 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
343 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
344 HAL_Delay(1010); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
345 if(withEscapeSequence) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
346 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
347 aRxBuffer[0] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
348 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBufferEscapeSequence, 3, 2000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
349 answer = HAL_ERROR; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
350 HAL_UART_Receive(&UartHandle, (uint8_t*)aRxBuffer, 3, 2000); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
351 HAL_Delay(1010); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
352 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
353 for(int i=0;i<3;i++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
354 if(aRxBuffer[i] != '+') |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
355 answer = HAL_ERROR; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
356 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
357 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
358 aRxBuffer[0] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
359 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBufferName, 21, 2000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
360 answer = HAL_ERROR; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
361 HAL_UART_Receive(&UartHandle, (uint8_t*)aRxBuffer, 21+6, 2000); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
362 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
363 for(int i=0;i<21;i++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
364 if(aRxBuffer[i] != aTxBufferName[i]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
365 answer = HAL_ERROR; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
366 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
367 for(int i=0;i<6;i++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
368 if(aRxBuffer[21+i] != answerOkay[i]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
369 answer = HAL_ERROR; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
370 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
371 HAL_Delay(200); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
372 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
373 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBufferWrite, 5, 2000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
374 answer = HAL_ERROR; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
375 HAL_UART_Receive(&UartHandle, (uint8_t*)aRxBuffer, 5+6, 2000); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
376 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
377 for(int i=0;i<5;i++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
378 if(aRxBuffer[i] != aTxBufferWrite[i]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
379 answer = HAL_ERROR; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
380 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
381 for(int i=0;i<6;i++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
382 if(aRxBuffer[5+i] != answerOkay[i]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
383 answer = HAL_ERROR; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
384 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
385 answer = HAL_OK; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
386 return answer; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
387 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
388 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
389 uint8_t openComm(uint8_t aRxByte) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
390 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
391 SStateList status; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
392 uint8_t localRx; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
393 uint8_t timeoutCounter = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
394 uint8_t answer = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
395 uint8_t service_mode_last_three_bytes[3]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
396 uint8_t service_mode_response[5] = |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
397 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
398 0x4B, |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
399 0xAB, |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
400 0xCD, |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
401 0xEF, |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
402 0x4C |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
403 }; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
404 uint8_t download_mode_response[2] = |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
405 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
406 0xBB, |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
407 0x4D |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
408 }; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
409 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
410 if((aRxByte != BYTE_DOWNLOAD_MODE) && (aRxByte != BYTE_SERVICE_MODE)) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
411 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
412 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
413 set_globalState(StUART_STANDARD); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
414 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
415 /* service mode is four bytes |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
416 0xAA 0xAB 0xCD 0xEF |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
417 answer is |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
418 */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
419 localRx = aRxByte; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
420 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
421 if(aRxByte == BYTE_SERVICE_MODE) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
422 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
423 if((HAL_UART_Receive(&UartHandle, (uint8_t*)service_mode_last_three_bytes, 3, 2000)!= HAL_OK)) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
424 answer = 0x00; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
425 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
426 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
427 if((service_mode_last_three_bytes[0] != 0xAB) || (service_mode_last_three_bytes[1] != 0xCD) || (service_mode_last_three_bytes[2] != 0xEF)) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
428 answer = 0x00; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
429 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
430 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
431 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)service_mode_response, 5, 2000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
432 answer = 0x00; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
433 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
434 answer = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
435 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
436 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
437 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
438 else //if(aRxByte == BYTE_SERVICE_MODE) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
439 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
440 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)download_mode_response, 2, 2000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
441 answer = 0x00; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
442 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
443 answer = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
444 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
445 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
446 while((answer == prompt4D4C(receiveStartByteUart)) && (timeoutCounter < UART_TIMEOUT_SECONDS)) /* try receive once a second */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
447 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
448 if(HAL_UART_Receive(&UartHandle, (uint8_t*)&localRx, 1, UART_OPERATION_TIMEOUT)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
449 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
450 timeoutCounter++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
451 get_globalStateList(&status); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
452 if (status.base != BaseComm) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
453 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
454 timeoutCounter = UART_TIMEOUT_SECONDS; /* Abort action triggered outside main loop => exit */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
455 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
456 if(EvaluateBluetoothSignalStrength) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
457 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
458 tComm_EvaluateBluetoothStrength(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
459 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
460 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
461 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
462 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
463 answer = select_mode(localRx); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
464 timeoutCounter = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
465 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
466 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
467 set_returnFromComm(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
468 return 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
469 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
470 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
471 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
472 uint8_t prompt4D4C(uint8_t mode) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
473 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
474 if(mode == BYTE_SERVICE_MODE) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
475 return 0x4C; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
476 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
477 return 0x4D; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
478 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
479 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
480 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
481 uint8_t select_mode(uint8_t type) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
482 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
483 uint8_t dummyForBootloader[256] = {0}; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
484 uint8_t count; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
485 uint8_t aTxBuffer[128]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
486 uint8_t aRxBuffer[68]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
487 uint8_t answer; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
488 aTxBuffer[0] = type; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
489 aTxBuffer[1] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
490 uint8_t tempHigh, tempLow; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
491 count = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
492 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
493 // service mode only commands |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
494 if(receiveStartByteUart == BYTE_SERVICE_MODE) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
495 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
496 // first part |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
497 switch(type) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
498 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
499 // start communication (again) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
500 case 0xAA: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
501 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer, 2, 1000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
502 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
503 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
504 return prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
505 default: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
506 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
507 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
508 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
509 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
510 // Exit communication on Text like RING, CONNECT, ... or 0xFF command |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
511 if((type < 0x60) || (type == 0xFF)) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
512 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
513 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
514 // return of command for (almost) all commands |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
515 switch(type) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
516 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
517 // not supported yet case 0x20: // send hi:lo:temp1 bytes starting from ext_flash_address:3 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
518 // not supported yet case 0x22: // Resets all logbook pointers and the logbook (!) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
519 // not supported yet case 0x23: // Resets battery gauge registers |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
520 // not supported yet case 0x30: // write bytes starting from ext_flash_address:3 (Stop when timeout) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
521 // not supported yet case 0x40: // erases 4kB block from ext_flash_address:3 (Warning: No confirmation or built-in security here...) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
522 // not supported yet case 0x42: // erases range in 4kB steps (Get 3 bytes address and 1byte amount of 4kB blocks) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
523 // not supported yet case 0x50: // sends firmware from external flash from 0x3E0000 to 0x3FD000 (118784bytes) via comm |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
524 case 0xFE: // hw unit_tests |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
525 case 0x71: // hw read manufacturing data |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
526 case 0x73: // hw update FLEX |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
527 case 0x79: // hw read device data |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
528 case 0x74: // hw update Firmware |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
529 case 0x75: // hw update RTE |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
530 case 0x76: // hw update Fonts |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
531 case 0x80: // hw write manufacturing data |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
532 case 0x81: // hw write second serial |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
533 case 0x82: // hw set bluetooth name |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
534 case 0xC1: // Start low-level bootloader |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
535 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer, 1, UART_OPERATION_TIMEOUT)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
536 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
537 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
538 default: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
539 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
540 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
541 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
542 // now send content or update firmware |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
543 switch(type) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
544 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
545 case 0xFE: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
546 // work to do :-) 12. Oct. 2015 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
547 // 256 bytes output |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
548 memset(aTxBuffer,0,128); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
549 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer, 128,5000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
550 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
551 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer, 128,5000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
552 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
553 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
554 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
555 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
556 case 0x71: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
557 memcpy(aTxBuffer,hardwareDataGetPointer(),64); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
558 count += 64; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
559 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
560 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
561 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
562 case 0x73: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
563 answer = receive_update_flex(0); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
564 if(answer == 0) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
565 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
566 else if(answer == 2) // 2 = RTE without bootToBootloader |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
567 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
568 aTxBuffer[0] = 0xFF; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
569 HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer, 1,10000); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
570 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
571 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
572 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
573 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
574 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
575 if(answer == 1) /* 0xFF is checksum error, 2 = RTE without bootToBootloader */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
576 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
577 extern uint8_t bootToBootloader; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
578 bootToBootloader = 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
579 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
580 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
581 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
582 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
583 case 0x79: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
584 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer, 1,10000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
585 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
586 ext_flash_read_fixed_16_devicedata_blocks_formated_128byte_total(aTxBuffer); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
587 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer, 128,5000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
588 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
589 aTxBuffer[0] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
590 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer, 1,10000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
591 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
592 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
593 return prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
594 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
595 case 0x82: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
596 setForcedBluetoothName = 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
597 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
598 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
599 case 0x74: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
600 answer = receive_update_data_mainCPU_firmware(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
601 if(answer != 0) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
602 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
603 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
604 if(answer == 1) // 0xFF is checksum error |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
605 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
606 extern uint8_t bootToBootloader; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
607 bootToBootloader = 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
608 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
609 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
610 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
611 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
612 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
613 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
614 case 0x75: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
615 receive_update_data_cpu2(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
616 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
617 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
618 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
619 case 0x76: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
620 answer = receive_update_data_mainCPU_variable_firmware(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
621 if(answer != 0) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
622 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
623 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
624 if(answer == 1) // 0xFF is checksum error |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
625 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
626 extern uint8_t bootToBootloader; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
627 bootToBootloader = 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
628 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
629 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
630 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
631 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
632 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
633 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
634 case 0x80: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
635 if(HAL_UART_Receive(&UartHandle, (uint8_t*)aRxBuffer, 52, 5000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
636 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
637 if(hardware_programmProductionData(aRxBuffer) == HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
638 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
639 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
640 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
641 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
642 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
643 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
644 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
645 case 0x81: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
646 if(HAL_UART_Receive(&UartHandle, (uint8_t*)aRxBuffer, 12, 1000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
647 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
648 if(hardware_programmSecondarySerial(aRxBuffer) == HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
649 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
650 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
651 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
652 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
653 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
654 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
655 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
656 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
657 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
658 // was service command? Yes, finish and exit |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
659 if(count) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
660 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
661 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer, count,10000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
662 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
663 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
664 return prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
665 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
666 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
667 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
668 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
669 // download mode commands |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
670 switch(type) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
671 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
672 // return of command for almost all commands |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
673 case 0x60: // get model + features |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
674 case 0x61: // get all headers full (256 bytes) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
675 case 0x62: // set clock |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
676 case 0x63: // set custom text |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
677 case 0x66: // get dive profile |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
678 case 0x69: // get serial, old version numbering, custom text |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
679 case 0x6A: // get model |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
680 case 0x6B: // get specific firmware version |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
681 case 0x6C: /* Display Bluetooth signal strength */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
682 case 0x6D: // get all compact headers (16 byte) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
683 case 0x6E: // display text |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
684 case 0x70: // read min, default, max setting |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
685 case 0x72: // read setting |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
686 case 0x77: // write setting |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
687 case 0x78: // reset all settings |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
688 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer, 1, 1000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
689 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
690 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
691 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
692 // start communication (again) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
693 case 0xBB: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
694 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer, 2, 1000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
695 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
696 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
697 return prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
698 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
699 // stop communication |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
700 case 0xFF: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
701 HAL_UART_Transmit(&UartHandle, (uint8_t*)&aTxBuffer, 1, 1000); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
702 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
703 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
704 default: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
705 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
706 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
707 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
708 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
709 switch(type) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
710 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
711 case 0x62: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
712 if(HAL_UART_Receive(&UartHandle, (uint8_t*)aRxBuffer, 6, 2000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
713 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
714 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
715 case 0x63: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
716 if(HAL_UART_Receive(&UartHandle, (uint8_t*)aRxBuffer, 60, 5000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
717 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
718 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
719 case 0x66: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
720 if(HAL_UART_Receive(&UartHandle, (uint8_t*)aRxBuffer, 1, 1000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
721 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
722 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
723 case 0x6B: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
724 if(HAL_UART_Receive(&UartHandle, (uint8_t*)aRxBuffer, 1, 1000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
725 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
726 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
727 case 0x6E: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
728 if(HAL_UART_Receive(&UartHandle, (uint8_t*)aRxBuffer, 16, 5000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
729 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
730 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
731 case 0x77: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
732 if(HAL_UART_Receive(&UartHandle, (uint8_t*)aRxBuffer, 5, 5000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
733 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
734 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
735 case 0x72: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
736 if(HAL_UART_Receive(&UartHandle, (uint8_t*)aRxBuffer, 1, 5000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
737 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
738 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
739 case 0x70: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
740 if(HAL_UART_Receive(&UartHandle, (uint8_t*)aRxBuffer, 1, 5000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
741 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
742 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
743 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
744 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
745 switch(type) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
746 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
747 /* common to standard and bootloader */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
748 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
749 // get model + features |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
750 case 0x60: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
751 aTxBuffer[count++] = 0x00; // hardware descriptor HIGH byte |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
752 aTxBuffer[count++] = 0x3B; // hardware descriptor LOW byte // 0x3B is OSTC4 // 0x1A is OTSC3 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
753 aTxBuffer[count++] = 0x00; // feature descriptor HIGH byte |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
754 aTxBuffer[count++] = 0x00; // feature descriptor LOW byte |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
755 aTxBuffer[count++] = 0x43; // model id |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
756 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
757 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
758 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
759 // get model |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
760 case 0x6A: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
761 aTxBuffer[count++] = 0x3B; // 0x3B is OSTC4 // 0x1A is OTSC3 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
762 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
763 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
764 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
765 // get all firmware version and status (OSTC4 only) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
766 case 0x6B: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
767 switch(*aRxBuffer) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
768 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
769 case 0xFF: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
770 // firmware |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
771 aTxBuffer[count++] = firmwareDataGetPointer()->versionFirst; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
772 aTxBuffer[count++] = firmwareDataGetPointer()->versionSecond; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
773 aTxBuffer[count++] = firmwareDataGetPointer()->versionThird; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
774 aTxBuffer[count++] = firmwareDataGetPointer()->versionBeta; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
775 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
776 case 0xFE: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
777 // RTE |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
778 getActualRTEandFONTversion(&tempHigh, &tempLow, 0, 0); // RTE |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
779 aTxBuffer[count++] = tempHigh; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
780 aTxBuffer[count++] = tempLow; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
781 aTxBuffer[count++] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
782 aTxBuffer[count++] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
783 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
784 case 0x10: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
785 getActualRTEandFONTversion( 0, 0, &tempHigh, &tempLow); // font |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
786 aTxBuffer[count++] = tempHigh; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
787 aTxBuffer[count++] = tempLow; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
788 aTxBuffer[count++] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
789 aTxBuffer[count++] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
790 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
791 default: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
792 // not supported |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
793 aTxBuffer[count++] = 0xFF; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
794 aTxBuffer[count++] = 0xFF; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
795 aTxBuffer[count++] = 0xFF; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
796 aTxBuffer[count++] = 0xFF; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
797 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
798 /* Jef Driesen Test |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
799 default: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
800 // not supported |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
801 aTxBuffer[count++] = 0x1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
802 aTxBuffer[count++] = 0x1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
803 aTxBuffer[count++] = 0x1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
804 aTxBuffer[count++] = 0x1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
805 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
806 */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
807 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
808 /* |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
809 // serial |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
810 aTxBuffer[count++] = pSettings->serialLow; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
811 aTxBuffer[count++] = pSettings->serialHigh; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
812 // batch code (date) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
813 hardwareBatchCode(&tempHigh, &tempLow); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
814 aTxBuffer[count++] = tempLow; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
815 aTxBuffer[count++] = tempHigh; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
816 // status and status detail (future feature) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
817 aTxBuffer[count++] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
818 aTxBuffer[count++] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
819 aTxBuffer[count++] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
820 aTxBuffer[count++] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
821 */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
822 // prompt |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
823 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
824 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
825 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
826 /* Trigger Bluetooth signal strength evaluation */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
827 case 0x6C: tComm_EvaluateBluetoothStrength(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
828 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
829 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
830 // display text |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
831 case 0x6E: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
832 for(int i=0;i<16;i++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
833 display_text[i] = aRxBuffer[i]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
834 display_text[15] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
835 display_text[255] = 16; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
836 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
837 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
838 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
839 // version / identify |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
840 case 0x69: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
841 aTxBuffer[count++] = 0;//pSettings->serialLow; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
842 aTxBuffer[count++] = 0;//pSettings->serialHigh; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
843 aTxBuffer[count++] = 0;//firmwareVersion_16bit_low(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
844 aTxBuffer[count++] = 0;//firmwareVersion_16bit_high(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
845 memset(&aTxBuffer[count], 0, 60); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
846 count += 60; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
847 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
848 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
849 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
850 /* bootloader dummies */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
851 // full headers (256 byte) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
852 case 0x61: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
853 for(int StepBackwards = 0;StepBackwards<256;StepBackwards++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
854 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
855 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)dummyForBootloader, 256,5000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
856 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
857 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
858 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
859 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
860 // compact headers (16 byte) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
861 case 0x6D: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
862 for(int StepBackwards = 0;StepBackwards<256;StepBackwards++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
863 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
864 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)dummyForBootloader, 16,5000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
865 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
866 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
867 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
868 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
869 // set clock & date |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
870 case 0x62: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
871 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
872 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
873 // set custom text |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
874 case 0x63: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
875 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
876 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
877 // get dive profile |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
878 case 0x66: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
879 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)dummyForBootloader, 256,5000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
880 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
881 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
882 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
883 // read min,default,max setting |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
884 // read settings |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
885 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
886 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
887 case 0x72: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
888 memcpy(&aTxBuffer[count], dummyForBootloader, 4); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
889 count += 4; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
890 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
891 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
892 // write settings |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
893 case 0x77: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
894 aTxBuffer[count++] = prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
895 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
896 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
897 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
898 if(count) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
899 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
900 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer, count,10000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
901 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
902 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
903 return prompt4D4C(receiveStartByteUart); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
904 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
905 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
906 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
907 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
908 #define BLOCKSIZE 0x1000 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
909 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
910 HAL_StatusTypeDef receive_uart_large_size(UART_HandleTypeDef *huart, uint8_t *pData, uint32_t Size) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
911 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
912 uint16_t length_4k_blocks; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
913 uint16_t length_4k_remainder; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
914 uint32_t temp; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
915 HAL_StatusTypeDef result = HAL_OK; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
916 uint32_t pDataLocal; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
917 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
918 length_4k_blocks = (uint16_t) (Size / BLOCKSIZE); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
919 temp = length_4k_blocks; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
920 temp *= BLOCKSIZE; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
921 length_4k_remainder = (uint16_t) ( Size - temp); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
922 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
923 pDataLocal = (uint32_t)pData; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
924 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
925 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
926 while((result == HAL_OK) && length_4k_blocks) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
927 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
928 result = HAL_UART_Receive(&UartHandle, (uint8_t *)pDataLocal, BLOCKSIZE , UART_TIMEOUT_LARGE_BLOCK); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
929 pDataLocal += BLOCKSIZE; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
930 length_4k_blocks--; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
931 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
932 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
933 if((result == HAL_OK) && length_4k_remainder) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
934 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
935 result = HAL_UART_Receive(&UartHandle, (uint8_t *)pDataLocal, length_4k_remainder , UART_TIMEOUT_LARGE_BLOCK); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
936 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
937 return result; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
938 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
939 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
940 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
941 /* for safety reason (memory blocking this code is main and sub */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
942 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
943 uint8_t receive_update_data_cpu2(void) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
944 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
945 uint8_t answer; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
946 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
947 uint8_t* pBuffer = (uint8_t*)getFrame(20); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
948 answer = receive_update_data_cpu2_sub(pBuffer); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
949 releaseFrame(20,(uint32_t)pBuffer); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
950 return answer; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
951 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
952 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
953 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
954 uint8_t receive_update_data_cpu2_sub(uint8_t* pBuffer) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
955 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
956 uint8_t sBuffer[10]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
957 uint32_t length, offsetTotal, checksum, checksumCalc; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
958 uint8_t id; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
959 const uint8_t id_RTE = 0xFE; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
960 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
961 //Get length |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
962 if(HAL_UART_Receive(&UartHandle, pBuffer, 4,5000)!= HAL_OK) // 58000 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
963 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
964 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
965 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
966 length = 256 * 256 * 256 * (uint32_t)pBuffer[0] + 256 * 256 * (uint32_t)pBuffer[1] + 256 * (uint32_t)pBuffer[2] + pBuffer[3]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
967 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
968 //Get id |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
969 if(HAL_UART_Receive(&UartHandle, pBuffer, 4,5000)!= HAL_OK) // 58000 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
970 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
971 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
972 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
973 id = pBuffer[0]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
974 offsetTotal = 256 * 256 * 256 * (uint32_t)pBuffer[0] + 256 * 256 * (uint32_t)pBuffer[1] + 256 * (uint32_t)pBuffer[2] + pBuffer[3]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
975 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
976 // get checksum, bytes are in different order on Dev C++ code!!! |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
977 if(HAL_UART_Receive(&UartHandle, sBuffer, 4,5000)!= HAL_OK) // 58000 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
978 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
979 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
980 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
981 checksum = 256 * 256 * 256 * (uint32_t)sBuffer[3] + 256 * 256 * (uint32_t)sBuffer[2] + 256 * (uint32_t)sBuffer[1] + sBuffer[0]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
982 checksumCalc = length + offsetTotal; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
983 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
984 // no need to get code if checksum == length is wrong |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
985 if(checksumCalc != checksum) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
986 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
987 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
988 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
989 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
990 //get Code |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
991 if(receive_uart_large_size(&UartHandle, pBuffer, length)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
992 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
993 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
994 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
995 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
996 //get Checksum |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
997 if(HAL_UART_Receive(&UartHandle, sBuffer, 4,5000)!= HAL_OK) // 580000 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
998 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
999 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1000 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1001 checksum = 256 * 256 * 256 *(uint32_t)sBuffer[0] + 256 * 256 * (uint32_t)sBuffer[1] + 256 * (uint32_t)sBuffer[2] + sBuffer[3]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1002 // uint32_t checksumCalc = crc32c_checksum(pBuffer, length,0,0); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1003 checksumCalc = CRC_CalcBlockCRC((uint32_t*)pBuffer, length/4); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1004 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1005 if(checksum != checksumCalc) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1006 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1007 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1008 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1009 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1010 if(id != id_RTE) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1011 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1012 strcpy(display_text,"wrong data."); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1013 display_text[255] = 32; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1014 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1015 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1016 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1017 strcpy(display_text," RTE update."); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1018 display_text[255] = 32; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1019 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1020 return extCPU2bootloader(pBuffer,length,display_text); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1021 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1022 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1023 uint8_t receive_update_flex(uint8_t isRTEupdateALLOWED) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1024 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1025 uint8_t answer; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1026 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1027 uint8_t* pBuffer1 = (uint8_t*)getFrame(20); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1028 uint8_t* pBuffer2 = (uint8_t*)getFrame(20); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1029 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1030 answer = receive_update_data_flex(pBuffer1, pBuffer2, isRTEupdateALLOWED); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1031 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1032 releaseFrame(20,(uint32_t)pBuffer1); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1033 releaseFrame(20,(uint32_t)pBuffer2); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1034 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1035 return answer; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1036 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1037 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1038 uint8_t receive_update_data_mainCPU_firmware(void) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1039 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1040 uint8_t answer; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1041 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1042 uint8_t* pBuffer1 = (uint8_t*)getFrame(20); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1043 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1044 answer = receive_update_data_mainCPU_firmware_subroutine(1, pBuffer1, 0); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1045 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1046 releaseFrame(20,(uint32_t)pBuffer1); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1047 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1048 return answer; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1049 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1050 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1051 /* multi buffer (long data) not tested yet */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1052 uint8_t receive_update_data_mainCPU_variable_firmware(void) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1053 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1054 uint8_t answer; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1055 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1056 uint8_t* pBuffer1 = (uint8_t*)getFrame(20); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1057 uint8_t* pBuffer2 = (uint8_t*)getFrame(20); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1058 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1059 answer = receive_update_data_mainCPU_firmware_subroutine(2, pBuffer1, pBuffer2); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1060 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1061 releaseFrame(20,(uint32_t)pBuffer1); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1062 releaseFrame(20,(uint32_t)pBuffer2); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1063 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1064 return answer; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1065 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1066 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1067 uint8_t receive_update_data_flex(uint8_t* pBuffer1, uint8_t* pBuffer2, uint8_t RTEupdateALLOWED) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1068 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1069 uint8_t sBuffer[10]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1070 uint8_t serialBuffer[10]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1071 uint32_t length1, length2, lengthCompare, offsetCompare, ByteCompareStatus; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1072 uint32_t lengthTotal, offsetTotal; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1073 uint32_t checksum, checksumCalc = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1074 uint8_t id; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1075 const uint8_t id_Region1_firmware = 0xFF; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1076 const uint8_t id_RTE = 0xFE; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1077 uint8_t textpointer = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1078 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1079 //Get length |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1080 if(HAL_UART_Receive(&UartHandle, sBuffer, 4,5000)!= HAL_OK) // 58000 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1081 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1082 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1083 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1084 lengthTotal = 256 * 256 * 256 * (uint32_t)sBuffer[0] + 256 * 256 * (uint32_t)sBuffer[1] + 256 * (uint32_t)sBuffer[2] + sBuffer[3]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1085 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1086 //Get offset and/or id (id is 0xFF for RTE, 0xFE for firmware and offset if var) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1087 if(HAL_UART_Receive(&UartHandle, sBuffer, 4,5000)!= HAL_OK) // 58000 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1088 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1089 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1090 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1091 id = sBuffer[0]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1092 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1093 checksumCalc = 256 * 256 * 256 * (uint32_t)sBuffer[0] + 256 * 256 * (uint32_t)sBuffer[1] + 256 * (uint32_t)sBuffer[2] + sBuffer[3]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1094 checksumCalc += lengthTotal; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1095 //old, does no longer work because of the fonts: checksumCalc = lengthTotal + offsetTotal; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1096 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1097 if((id != id_Region1_firmware) && (id != id_RTE) && (id != id_FONT) && (id != id_FONT_OLD)) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1098 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1099 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1100 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1101 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1102 // neu 110212 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1103 if(id == id_FONT) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1104 offsetTotal = 256 * 256 * 256 * (uint32_t)sBuffer[1] + 256 * 256 * (uint32_t)sBuffer[2] + 256 * (uint32_t)sBuffer[3]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1105 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1106 offsetTotal = 256 * 256 * 256 * (uint32_t)sBuffer[0] + 256 * 256 * (uint32_t)sBuffer[1] + 256 * (uint32_t)sBuffer[2] + sBuffer[3]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1107 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1108 // get checksum, bytes are in different order on Dev C++ code!!! |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1109 if(HAL_UART_Receive(&UartHandle, sBuffer, 4,5000)!= HAL_OK) // 58000 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1110 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1111 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1112 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1113 checksum = 256 * 256 * 256 * (uint32_t)sBuffer[3] + 256 * 256 * (uint32_t)sBuffer[2] + 256 * (uint32_t)sBuffer[1] + sBuffer[0]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1114 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1115 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1116 if(checksumCalc != checksum) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1117 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1118 uint8_t ptr = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1119 strcpy(&display_text[ptr]," checksum error"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1120 ptr += 15; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1121 strcpy(&display_text[ptr],"\n\r"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1122 ptr += 2; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1123 ptr += gfx_number_to_string(10,0,&display_text[ptr],checksumCalc); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1124 display_text[ptr] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1125 display_text[255] = ptr + 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1126 return 0xFF; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1127 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1128 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1129 //Get serial (new since 160211) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1130 if(HAL_UART_Receive(&UartHandle, serialBuffer, 4,5000)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1131 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1132 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1133 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1134 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1135 if(lengthTotal > 768000) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1136 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1137 length1 = 768000; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1138 length2 = lengthTotal - length1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1139 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1140 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1141 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1142 length1 = lengthTotal; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1143 length2 = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1144 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1145 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1146 if((pBuffer2 == 0) && (length2 != 0)) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1147 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1148 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1149 //get Code |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1150 if(receive_uart_large_size(&UartHandle, pBuffer1, length1)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1151 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1152 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1153 if(length2) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1154 if(receive_uart_large_size(&UartHandle, pBuffer2, length2)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1155 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1156 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1157 //get Checksum |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1158 if(HAL_UART_Receive(&UartHandle, sBuffer, 4,5000)!= HAL_OK) // 58000 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1159 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1160 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1161 checksum = 256 * 256 * 256 *(uint32_t)sBuffer[0] + 256 * 256 * (uint32_t)sBuffer[1] + 256 * (uint32_t)sBuffer[2] + sBuffer[3]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1162 // uint32_t checksumCalc = crc32c_checksum(pBuffer1, length1, pBuffer2, length2); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1163 if(length2) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1164 checksumCalc = CRC_CalcBlockCRC_moreThan768000((uint32_t*)pBuffer1, (uint32_t*)pBuffer2, lengthTotal/4); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1165 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1166 checksumCalc = CRC_CalcBlockCRC((uint32_t*)pBuffer1, length1/4); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1167 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1168 /* check id now */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1169 /* |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1170 if(region == 2) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1171 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1172 if((id == id_Region1_firmware) || (id == id_RTE)) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1173 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1174 strcpy(display_text,"wrong data."); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1175 display_text[255] = 32; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1176 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1177 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1178 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1179 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1180 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1181 if(id != id_Region1_firmware) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1182 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1183 strcpy(display_text,"wrong data."); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1184 display_text[255] = 32; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1185 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1186 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1187 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1188 */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1189 /* test checksum */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1190 if(checksum != checksumCalc) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1191 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1192 uint8_t ptr = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1193 strcpy(&display_text[ptr]," checksum error"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1194 ptr += 15; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1195 strcpy(&display_text[ptr],"\n\r"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1196 display_text[ptr] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1197 display_text[255] = ptr + 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1198 return 0xFF; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1199 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1200 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1201 if(id == id_Region1_firmware) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1202 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1203 uint8_t ptr = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1204 display_text[ptr++] = 'V'; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1205 ptr += gfx_number_to_string(2,0,&display_text[ptr],pBuffer1[0x10000] & 0x1F); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1206 display_text[ptr++] = '.'; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1207 ptr += gfx_number_to_string(2,0,&display_text[ptr],pBuffer1[0x10001] & 0x1F); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1208 display_text[ptr++] = '.'; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1209 ptr += gfx_number_to_string(2,0,&display_text[ptr],pBuffer1[0x10002] & 0x1F); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1210 display_text[ptr++] = ' '; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1211 if(pBuffer1[0x10003]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1212 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1213 strcpy(&display_text[ptr],"beta "); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1214 ptr +=5; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1215 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1216 strcpy(&display_text[ptr],"\n\rpreparing for install."); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1217 ptr += 25; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1218 display_text[255] = ptr + 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1219 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1220 else if(id == id_RTE) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1221 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1222 if(RTEupdateALLOWED) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1223 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1224 strcpy(display_text," RTE update.\n\r"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1225 textpointer = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1226 while((display_text[textpointer] != 0) && (textpointer < 50)) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1227 textpointer++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1228 display_text[255] = textpointer+1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1229 return extCPU2bootloader(pBuffer1,length1,display_text); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1230 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1231 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1232 return 0xFF; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1233 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1234 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1235 //if(region == 2) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1236 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1237 uint8_t ptr = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1238 ptr += gfx_number_to_string(7,0,&display_text[ptr],lengthTotal); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1239 strcpy(&display_text[ptr]," bytes with "); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1240 ptr += 12; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1241 ptr += gfx_number_to_string(7,0,&display_text[ptr],offsetTotal); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1242 strcpy(&display_text[ptr]," offset"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1243 ptr += 7; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1244 strcpy(&display_text[ptr],"\n\rpreparing for install."); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1245 ptr += 25; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1246 display_text[255] = ptr + 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1247 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1248 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1249 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1250 // only non RTE !! |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1251 uint8_t* pBufferCompare = (uint8_t*)getFrame(20); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1252 ByteCompareStatus = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1253 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1254 if(id == id_Region1_firmware) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1255 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1256 /* standard firmware limited to 768000 */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1257 if(ext_flash_read_firmware(pBufferCompare,4,0) != 0xFFFFFFFF) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1258 ext_flash_erase_firmware(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1259 ext_flash_write_firmware(pBuffer1, length1); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1260 lengthCompare = ext_flash_read_firmware(pBufferCompare,768000,0); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1261 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1262 if(lengthCompare != length1) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1263 ByteCompareStatus = 10000; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1264 for(int i = 0; i < length1; i++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1265 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1266 if(pBuffer1[0] != pBufferCompare[0]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1267 ByteCompareStatus++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1268 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1269 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1270 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1271 //if(region == 2) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1272 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1273 /* upper region firmware can be larger (1MB) */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1274 if(ext_flash_read_firmware2(0, pBufferCompare,4, 0,0) != 0xFFFFFFFF) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1275 ext_flash_erase_firmware2(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1276 ext_flash_write_firmware2(offsetTotal, pBuffer1, length1, pBuffer2, length2); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1277 lengthCompare = ext_flash_read_firmware2(&offsetCompare, pBufferCompare,768000, 0,768000); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1278 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1279 if(lengthCompare != length1 + length2) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1280 ByteCompareStatus = 10000; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1281 if(offsetTotal != offsetCompare) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1282 ByteCompareStatus += 20000; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1283 for(int i = 0; i < length1; i++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1284 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1285 if(pBuffer1[0] != pBufferCompare[0]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1286 ByteCompareStatus++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1287 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1288 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1289 lengthCompare = ext_flash_read_firmware2(0, 0,768000, pBufferCompare,768000); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1290 for(int i = 0; i < length2; i++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1291 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1292 if(pBuffer2[0] != pBufferCompare[0]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1293 ByteCompareStatus++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1294 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1295 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1296 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1297 releaseFrame(20,(uint32_t)pBufferCompare); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1298 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1299 if(ByteCompareStatus != 0) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1300 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1301 strcpy(&display_text[0],"\n\rcopy error."); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1302 display_text[255] = 21; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1303 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1304 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1305 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1306 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1307 strcpy(&display_text[0],"\n\rready to install."); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1308 display_text[255] = 21; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1309 return 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1310 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1311 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1312 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1313 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1314 uint8_t receive_update_data_mainCPU_firmware_subroutine(uint8_t region, uint8_t* pBuffer1, uint8_t* pBuffer2) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1315 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1316 uint8_t sBuffer[10]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1317 uint32_t length1, length2, lengthCompare, offsetCompare, ByteCompareStatus; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1318 uint32_t lengthTotal, offsetTotal, checksum, checksumCalc = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1319 uint8_t id; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1320 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1321 //Get length |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1322 if(HAL_UART_Receive(&UartHandle, sBuffer, 4,5000)!= HAL_OK) // 58000 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1323 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1324 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1325 lengthTotal = 256 * 256 * 256 * (uint32_t)sBuffer[0] + 256 * 256 * (uint32_t)sBuffer[1] + 256 * (uint32_t)sBuffer[2] + sBuffer[3]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1326 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1327 //Get offset and/or id (id is 0xFF for RTE, 0xFE for firmware and offset if var) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1328 if(HAL_UART_Receive(&UartHandle, sBuffer, 4,5000)!= HAL_OK) // 58000 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1329 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1330 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1331 id = sBuffer[0]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1332 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1333 checksumCalc = 256 * 256 * 256 * (uint32_t)sBuffer[0] + 256 * 256 * (uint32_t)sBuffer[1] + 256 * (uint32_t)sBuffer[2] + sBuffer[3]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1334 checksumCalc += lengthTotal; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1335 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1336 if((id != id_Region1_firmware) && (id != id_RTE) && (id != id_FONT) && (id != id_FONT_OLD)) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1337 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1338 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1339 if(id == id_FONT) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1340 offsetTotal = 256 * 256 * 256 * (uint32_t)sBuffer[1] + 256 * 256 * (uint32_t)sBuffer[2] + 256 * (uint32_t)sBuffer[3]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1341 // alt, prior to id for font |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1342 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1343 offsetTotal = 256 * 256 * 256 * (uint32_t)sBuffer[0] + 256 * 256 * (uint32_t)sBuffer[1] + 256 * (uint32_t)sBuffer[2] + sBuffer[3]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1344 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1345 // get checksum, bytes are in different order on Dev C++ code!!! |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1346 if(HAL_UART_Receive(&UartHandle, sBuffer, 4,5000)!= HAL_OK) // 58000 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1347 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1348 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1349 checksum = 256 * 256 * 256 * (uint32_t)sBuffer[3] + 256 * 256 * (uint32_t)sBuffer[2] + 256 * (uint32_t)sBuffer[1] + sBuffer[0]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1350 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1351 //old: checksumCalc = lengthTotal + offsetTotal; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1352 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1353 if(checksumCalc != checksum) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1354 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1355 uint8_t ptr = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1356 strcpy(&display_text[ptr]," checksum error"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1357 ptr += 15; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1358 strcpy(&display_text[ptr],"\n\r"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1359 ptr += 2; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1360 ptr += gfx_number_to_string(10,0,&display_text[ptr],checksumCalc); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1361 display_text[ptr] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1362 display_text[255] = ptr + 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1363 return 0xFF; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1364 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1365 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1366 if(lengthTotal > 768000) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1367 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1368 length1 = 768000; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1369 length2 = lengthTotal - length1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1370 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1371 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1372 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1373 length1 = lengthTotal; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1374 length2 = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1375 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1376 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1377 if((pBuffer2 == 0) && (length2 != 0)) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1378 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1379 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1380 //get Code |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1381 if(receive_uart_large_size(&UartHandle, pBuffer1, length1)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1382 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1383 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1384 if(length2) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1385 if(receive_uart_large_size(&UartHandle, pBuffer2, length2)!= HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1386 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1387 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1388 //get Checksum |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1389 if(HAL_UART_Receive(&UartHandle, sBuffer, 4,5000)!= HAL_OK) // 58000 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1390 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1391 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1392 checksum = 256 * 256 * 256 *(uint32_t)sBuffer[0] + 256 * 256 * (uint32_t)sBuffer[1] + 256 * (uint32_t)sBuffer[2] + sBuffer[3]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1393 // uint32_t checksumCalc = crc32c_checksum(pBuffer1, length1, pBuffer2, length2); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1394 if(length2) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1395 checksumCalc = CRC_CalcBlockCRC_moreThan768000((uint32_t*)pBuffer1, (uint32_t*)pBuffer2, lengthTotal/4); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1396 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1397 checksumCalc = CRC_CalcBlockCRC((uint32_t*)pBuffer1, length1/4); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1398 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1399 /* check id now */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1400 if(region == 2) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1401 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1402 if((id == id_Region1_firmware) || (id == id_RTE)) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1403 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1404 strcpy(display_text,"wrong data."); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1405 display_text[255] = 32; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1406 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1407 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1408 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1409 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1410 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1411 if(id != id_Region1_firmware) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1412 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1413 strcpy(display_text,"wrong data."); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1414 display_text[255] = 32; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1415 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1416 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1417 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1418 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1419 /* test checksum */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1420 if(checksum != checksumCalc) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1421 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1422 uint8_t ptr = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1423 strcpy(&display_text[ptr]," pruefsummen error"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1424 ptr += 15; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1425 strcpy(&display_text[ptr],"\n\r"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1426 display_text[ptr] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1427 display_text[255] = ptr + 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1428 return 0xFF; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1429 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1430 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1431 if(region == 2) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1432 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1433 uint8_t ptr = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1434 ptr += gfx_number_to_string(7,0,&display_text[ptr],lengthTotal); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1435 strcpy(&display_text[ptr]," bytes with "); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1436 ptr += 12; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1437 ptr += gfx_number_to_string(7,0,&display_text[ptr],offsetTotal); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1438 strcpy(&display_text[ptr]," offset"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1439 ptr += 7; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1440 strcpy(&display_text[ptr],"\n\rpreparing for install."); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1441 ptr += 25; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1442 display_text[255] = ptr + 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1443 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1444 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1445 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1446 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1447 uint8_t ptr = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1448 display_text[ptr++] = 'V'; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1449 ptr += gfx_number_to_string(2,0,&display_text[ptr],pBuffer1[0x10000] & 0x1F); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1450 display_text[ptr++] = '.'; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1451 ptr += gfx_number_to_string(2,0,&display_text[ptr],pBuffer1[0x10001] & 0x1F); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1452 display_text[ptr++] = '.'; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1453 ptr += gfx_number_to_string(2,0,&display_text[ptr],pBuffer1[0x10002] & 0x1F); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1454 display_text[ptr++] = ' '; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1455 if(pBuffer1[0x10003]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1456 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1457 strcpy(&display_text[ptr],"beta "); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1458 ptr +=5; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1459 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1460 strcpy(&display_text[ptr],"\n\rpreparing for install."); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1461 ptr += 25; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1462 display_text[255] = ptr + 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1463 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1464 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1465 uint8_t* pBufferCompare = (uint8_t*)getFrame(20); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1466 ByteCompareStatus = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1467 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1468 if(region == 2) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1469 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1470 /* upper region firmware can be larger (1MB) */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1471 if(ext_flash_read_firmware2(0, pBufferCompare,4, 0,0) != 0xFFFFFFFF) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1472 ext_flash_erase_firmware2(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1473 ext_flash_write_firmware2(offsetTotal, pBuffer1, length1, pBuffer2, length2); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1474 lengthCompare = ext_flash_read_firmware2(&offsetCompare, pBufferCompare,768000, 0,768000); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1475 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1476 if(lengthCompare != length1 + length2) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1477 ByteCompareStatus = 10000; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1478 if(offsetTotal != offsetCompare) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1479 ByteCompareStatus += 20000; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1480 for(int i = 0; i < length1; i++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1481 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1482 if(pBuffer1[0] != pBufferCompare[0]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1483 ByteCompareStatus++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1484 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1485 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1486 lengthCompare = ext_flash_read_firmware2(0, 0,768000, pBufferCompare,768000); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1487 for(int i = 0; i < length2; i++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1488 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1489 if(pBuffer2[0] != pBufferCompare[0]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1490 ByteCompareStatus++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1491 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1492 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1493 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1494 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1495 /* standard firmware limited to 768000 */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1496 if(ext_flash_read_firmware(pBufferCompare,4,0) != 0xFFFFFFFF) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1497 ext_flash_erase_firmware(); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1498 ext_flash_write_firmware(pBuffer1, length1); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1499 lengthCompare = ext_flash_read_firmware(pBufferCompare,768000,0); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1500 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1501 if(lengthCompare != length1) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1502 ByteCompareStatus = 10000; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1503 for(int i = 0; i < length1; i++) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1504 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1505 if(pBuffer1[0] != pBufferCompare[0]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1506 ByteCompareStatus++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1507 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1508 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1509 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1510 releaseFrame(20,(uint32_t)pBufferCompare); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1511 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1512 if(ByteCompareStatus != 0) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1513 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1514 strcpy(&display_text[0],"\n\rcopy error."); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1515 display_text[255] = 21; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1516 return 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1517 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1518 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1519 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1520 strcpy(&display_text[0],"\n\rready to install."); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1521 display_text[255] = 21; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1522 return 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1523 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1524 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1525 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1526 void tComm_RequestBluetoothStrength(void) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1527 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1528 EvaluateBluetoothSignalStrength = 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1529 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1530 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1531 /* read, validate the modul answer and flush rx que if necessary */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1532 uint8_t tComm_CheckAnswerOK() |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1533 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1534 char answerOkay[] = "\r\nOK\r\n"; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1535 char aRxBuffer[UART_CMD_BUF_SIZE]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1536 uint8_t sizeAnswer = sizeof(answerOkay) -1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1537 uint8_t result = HAL_OK; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1538 uint8_t indexRef = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1539 uint8_t indexBuf = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1540 uint8_t answer; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1541 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1542 memset(aRxBuffer,0,UART_CMD_BUF_SIZE); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1543 if(HAL_UART_Receive(&UartHandle, (uint8_t*)aRxBuffer, sizeAnswer, UART_OPERATION_TIMEOUT) == HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1544 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1545 do |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1546 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1547 if(answerOkay[indexRef] == aRxBuffer[indexBuf]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1548 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1549 indexRef++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1550 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1551 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1552 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1553 if(indexRef != 0) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1554 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1555 indexRef = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1556 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1557 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1558 indexBuf++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1559 }while(indexBuf < sizeAnswer); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1560 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1561 if(indexRef != sizeAnswer) /* unexpected answer => there might be characters left in RX que => read and check all rx bytes */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1562 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1563 do |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1564 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1565 answer = HAL_ERROR; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1566 if (indexBuf < UART_CMD_BUF_SIZE) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1567 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1568 answer = HAL_UART_Receive(&UartHandle, (uint8_t*)&aRxBuffer[indexBuf], 1, 10); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1569 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1570 if(answerOkay[indexRef] == aRxBuffer[indexBuf]) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1571 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1572 indexRef++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1573 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1574 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1575 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1576 if(indexRef != 0) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1577 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1578 indexRef = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1579 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1580 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1581 indexBuf++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1582 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1583 }while((answer == HAL_OK) && (indexRef != sizeAnswer)); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1584 if(indexRef != sizeAnswer) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1585 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1586 result = HAL_ERROR; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1587 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1588 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1589 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1590 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1591 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1592 result = HAL_ERROR; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1593 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1594 return result; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1595 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1596 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1597 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1598 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1599 void tComm_EvaluateBluetoothStrength(void) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1600 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1601 char aTxBufferBarSSI[] = "AT+BARSSI\r"; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1602 char aTxBufferEscapeSequence[] = "+++"; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1603 char aTxBufferEnd[] = "ATO\r"; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1604 uint8_t sizeRequest = sizeof(aTxBufferBarSSI) -1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1605 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1606 uint8_t answer = HAL_OK; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1607 char aRxBuffer[UART_CMD_BUF_SIZE]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1608 char SignalStr[UART_CMD_BUF_SIZE]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1609 uint8_t index = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1610 uint8_t strindex = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1611 int8_t sigqual = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1612 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1613 HAL_Delay(200); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1614 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBufferEscapeSequence, 3, 2000)== HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1615 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1616 if(tComm_CheckAnswerOK() == HAL_OK) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1617 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1618 HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBufferBarSSI,sizeRequest , 2000); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1619 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1620 index = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1621 do /* Answer is not the common one. Instead the signal strength is received => read all available bytes one by one*/ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1622 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1623 answer = HAL_UART_Receive(&UartHandle, (uint8_t*)&aRxBuffer[index], 1, 100); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1624 if(index < UART_CMD_BUF_SIZE) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1625 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1626 index++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1627 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1628 }while(answer == HAL_OK); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1629 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1630 if((aRxBuffer[index] != 'E') && (aRxBuffer[index] != 0)) /* E represents the first letter of the string ERROR */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1631 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1632 index = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1633 strindex = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1634 do |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1635 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1636 SignalStr[strindex++] = aRxBuffer[index++]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1637 }while ((index < UART_CMD_BUF_SIZE - 1) && (aRxBuffer[index] != '\r')); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1638 SignalStr[strindex] = 0; /* terminate String */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1639 sigqual = strtol(SignalStr,NULL,0); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1640 /* Map db to abstract Bargraph */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1641 if(sigqual > 0) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1642 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1643 sprintf(SignalStr,"Bluetooth ||||||||"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1644 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1645 else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1646 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1647 sprintf(SignalStr,"Bluetooth |"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1648 strindex = strlen(SignalStr); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1649 sigqual *=-1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1650 sigqual = 100 - sigqual; /* invert because of negative db value */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1651 while(sigqual / 10 > 0 ) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1652 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1653 SignalStr[strindex++] = '|'; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1654 sigqual -= 10; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1655 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1656 SignalStr[strindex] = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1657 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1658 strcpy(display_text,SignalStr); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1659 display_text[255] = strlen(SignalStr); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1660 EvaluateBluetoothSignalStrength = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1661 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1662 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1663 HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBufferEnd, 4, 2000); /* exit terminal mode */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1664 index = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1665 do /* module will answer with current connection state */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1666 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1667 answer = HAL_UART_Receive(&UartHandle, (uint8_t*)&aRxBuffer[index], 1, 100); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1668 if(index < UART_CMD_BUF_SIZE) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1669 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1670 index++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1671 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1672 }while(answer == HAL_OK); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1673 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1674 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1675 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1676 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1677 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1678 void tComm_StartBlueModBaseInit() |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1679 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1680 BmTmpConfig = BM_INIT_TRIGGER_ON; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1681 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1682 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1683 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1684 uint8_t tComm_GetBTCmdStr(BTCmd cmdId, char* pCmdStr) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1685 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1686 uint8_t ret = 0; |
| 1003 | 1687 #ifndef OSTC4_HW |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1688 switch (cmdId) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1689 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1690 case BT_CMD_ECHO: sprintf(pCmdStr,"ATE0\r"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1691 ret = 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1692 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1693 case BT_CMD_BAUDRATE_115: strcpy(pCmdStr,"AT+UMRS=115200,1,8,1,1,1\r"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1694 ret = 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1695 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1696 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1697 case BT_CMD_BAUDRATE_460: strcpy(pCmdStr,"AT+UMRS=460800,1,8,1,1,1\r"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1698 ret = 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1699 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1700 case BT_CMD_NAME: strcpy(pCmdStr,"AT+UBTLN=OSTC5-12345\r"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1701 ret = 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1702 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1703 case BT_CMD_EXIT_CMD: strcpy(pCmdStr,"ATO1\r"); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1704 ret = 1; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1705 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1706 default: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1707 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1708 } |
| 1003 | 1709 #else |
| 1710 switch (cmdId) | |
| 1711 { | |
| 1712 case BT_CMD_ECHO: sprintf(pCmdStr,"ATE0\r"); | |
| 1713 ret = 1; | |
| 1714 break; | |
| 1715 case BT_CMD_SILENCE: strcpy(pCmdStr,"ATS30=0\r"); | |
| 1716 ret = 1; | |
| 1717 | |
| 1718 break; | |
| 1719 case BT_CMD_ESCAPE_DELAY: strcpy(pCmdStr,"ATS12=10\r"); | |
| 1720 ret = 1; | |
| 1721 | |
| 1722 break; | |
| 1723 case BT_CMD_SIGNAL_POLL: strcpy(pCmdStr,"AT+BSTPOLL=100\r"); | |
| 1724 ret = 1; | |
| 1725 | |
| 1726 break; | |
| 1727 case BT_CMD_BAUDRATE_115: strcpy(pCmdStr,"AT%B8\r"); | |
| 1728 ret = 1; | |
| 1729 break; | |
| 1730 | |
| 1731 case BT_CMD_BAUDRATE_460: strcpy(pCmdStr,"AT%B22\r"); | |
| 1732 ret = 1; | |
| 1733 break; | |
| 1734 case BT_CMD_NAME: strcpy(pCmdStr,"AT+BNAME=OSTC4-12345\r"); | |
| 1735 ret = 1; | |
| 1736 break; | |
| 1737 case BT_CMD_EXIT_CMD: strcpy(pCmdStr,"ATO\r"); | |
| 1738 ret = 1; | |
| 1739 break; | |
| 1740 default: | |
| 1741 break; | |
| 1742 } | |
| 1743 #endif | |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1744 return ret; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1745 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1746 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1747 void tComm_StartBlueModConfig() |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1748 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1749 uint8_t answer = HAL_OK; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1750 uint8_t RxBuffer[UART_CMD_BUF_SIZE]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1751 uint8_t index = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1752 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1753 BmTmpConfig = BM_CONFIG_ECHO; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1754 do /* flush RX buffer */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1755 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1756 answer = HAL_UART_Receive(&UartHandle, (uint8_t*)&RxBuffer[index], 1, 10); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1757 if(index < UART_CMD_BUF_SIZE) index++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1758 }while(answer == HAL_OK); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1759 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1760 |
| 1003 | 1761 uint32_t time_elapsed_ms(uint32_t ticksstart,uint32_t ticksnow) |
| 1762 { | |
| 1763 if(ticksstart <= ticksnow) | |
| 1764 return ticksnow - ticksstart; | |
| 1765 else | |
| 1766 return 0xFFFFFFFF - ticksstart + ticksnow; | |
| 1767 } | |
| 1768 | |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1769 uint8_t tComm_HandleBlueModConfig() |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1770 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1771 static uint8_t RestartModule = 1; /* used to do power off / on cycle */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1772 static uint8_t ConfigRetryCnt = 0; /* Retry count without power cycle */ |
| 1003 | 1773 static uint8_t lastConfigStep = BM_CONFIG_OFF; |
| 1774 static uint32_t cmdStartTick = 0; | |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1775 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1776 char TxBuffer[UART_CMD_BUF_SIZE]; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1777 uint8_t CmdSize = 0; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1778 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1779 uint8_t result = HAL_OK; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1780 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1781 memset(TxBuffer, 0, sizeof(TxBuffer)); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1782 |
| 1003 | 1783 if(lastConfigStep != BmTmpConfig) |
| 1784 { | |
| 1785 ConfigRetryCnt = 0; | |
| 1786 lastConfigStep = BmTmpConfig; | |
| 1787 } | |
| 1788 | |
| 1789 if(time_elapsed_ms(cmdStartTick, HAL_GetTick()) > 100) | |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1790 { |
| 1003 | 1791 switch (BmTmpConfig) |
| 1792 { | |
| 1793 case BM_CONFIG_ECHO: tComm_GetBTCmdStr (BT_CMD_ECHO, TxBuffer); | |
| 1794 break; | |
| 1795 case BM_CONFIG_SILENCE: tComm_GetBTCmdStr (BT_CMD_SILENCE, TxBuffer); | |
| 1796 break; | |
| 1797 case BM_CONFIG_ESCAPE_DELAY: tComm_GetBTCmdStr (BT_CMD_ESCAPE_DELAY, TxBuffer); | |
| 1798 break; | |
| 1799 case BM_CONFIG_SIGNAL_POLL: tComm_GetBTCmdStr(BT_CMD_SIGNAL_POLL, TxBuffer); | |
| 1800 break; | |
| 1801 case BM_CONFIG_BAUD: | |
| 1802 #ifdef ENABLE_FAST_COMM | |
| 1803 tComm_GetBTCmdStr(BT_CMD_BAUDRATE_460, TxBuffer); | |
| 1804 #else | |
| 1805 BmTmpConfig = BM_CONFIG_DONE; | |
| 1806 #endif | |
| 1807 break; | |
| 1808 case BM_CONFIG_RETRY: ConfigRetryCnt--; | |
| 1809 HAL_Delay(1); | |
| 1810 if(ConfigRetryCnt == 0) | |
| 1811 { | |
| 1812 MX_Bluetooth_PowerOn(); | |
| 1813 tComm_StartBlueModConfig(); | |
| 1814 } | |
| 1815 break; | |
| 1816 case BM_CONFIG_DONE: | |
| 1817 case BM_CONFIG_OFF: | |
| 1818 ConfigRetryCnt = 0; | |
| 1819 RestartModule = 1; | |
| 1820 break; | |
| 1821 | |
| 1822 | |
| 1823 #ifndef OSTC4_HW | |
| 1824 /* the procedure below is just needed for the initial bluetooth module initialization */ | |
| 1825 case BM_INIT_TRIGGER_ON: HAL_Delay(2000); | |
| 1826 HAL_GPIO_WritePin(BLE_UBLOX_DSR_GPIO_PORT,BLE_UBLOX_DSR_PIN,GPIO_PIN_RESET); | |
| 1827 BmTmpConfig++; | |
| 1828 break; | |
| 1829 case BM_INIT_TRIGGER_OFF: HAL_Delay(1); | |
| 1830 HAL_GPIO_WritePin(BLE_UBLOX_DSR_GPIO_PORT,BLE_UBLOX_DSR_PIN,GPIO_PIN_SET); | |
| 1831 HAL_Delay(2000); | |
| 1832 BmTmpConfig++; | |
| 1833 break; | |
| 1834 case BM_INIT_ECHO: sprintf(TxBuffer,"ATE0\r"); | |
| 1835 break; | |
| 1836 case BM_INIT_FACTORY: sprintf(TxBuffer,"AT+UFACTORY\r"); /*Set to factory defined configuration */ | |
| 1837 break; | |
| 1838 case BM_INIT_MODE: sprintf(TxBuffer,"AT+UMSM=1\r"); /* start in Data mode */ | |
| 1839 break; | |
| 1840 case BM_INIT_BLE: sprintf(TxBuffer,"AT+UBTLE=2\r"); /* Bluetooth low energy Peripheral */ | |
| 1841 break; | |
| 1842 case BM_INIT_NAME: sprintf(TxBuffer,"AT+UBTLN=OSTC5-12345\r"); /* Bluetooth name */ | |
| 1843 if(hardwareDataGetPointer()->primarySerial != 0xFFFF) /* module reinit? => restore old name */ | |
| 1844 { | |
| 1845 gfx_number_to_string(5,1,&TxBuffer[15],hardwareDataGetPointer()->primarySerial); | |
| 1846 hardware_programmPrimaryBluetoothNameSet(); | |
| 1847 } | |
| 1848 break; | |
| 1849 case BM_INIT_SSP_IDO_OFF: sprintf(TxBuffer,"AT+UDSC=0,0\r"); /* Disable SPP Server on ID0 */ | |
| 1850 break; | |
| 1851 case BM_INIT_SSP_IDO_ON: sprintf(TxBuffer,"AT+UDSC=0,3\r"); /* SPP Server on ID0 */ | |
| 1852 break; | |
| 1853 case BM_INIT_SSP_ID1_OFF: sprintf(TxBuffer,"AT+UDSC=1,0\r"); /* Disable SPS Server on ID1 */ | |
| 1854 break; | |
| 1855 case BM_INIT_SSP_ID1_ON: sprintf(TxBuffer,"AT+UDSC=1,6\r"); /* SPS Server on ID1 */ | |
| 1856 break; | |
| 1857 case BM_INIT_STORE: sprintf(TxBuffer,"AT&W0\r"); /* write settings into eeprom */ | |
| 1858 break; | |
| 1859 case BM_INIT_RESTART: sprintf(TxBuffer,"AT+CPWROFF\r"); /* reboot module */ | |
| 1860 break; | |
| 1861 case BM_INIT_DONE: BmTmpConfig = BM_CONFIG_ECHO; | |
| 1862 break; | |
| 1863 default: | |
| 1864 break; | |
| 1865 } | |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1866 #else |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1867 case BM_INIT_TRIGGER_ON: HAL_Delay(2000); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1868 BmTmpConfig++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1869 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1870 case BM_INIT_TRIGGER_OFF: HAL_Delay(1); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1871 HAL_Delay(2000); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1872 BmTmpConfig++; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1873 break; |
| 1003 | 1874 case BM_INIT_ECHO: |
| 1875 case BM_INIT_ECHO2: sprintf(TxBuffer,"ATE0\r"); | |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1876 break; |
| 1003 | 1877 case BM_INIT_FACTORY: sprintf(TxBuffer,"AT&F1\r"); /*Set to factory defined configuration */ |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1878 break; |
| 1003 | 1879 case BM_INIT_MODE: BmTmpConfig++; |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1880 break; |
| 1003 | 1881 case BM_INIT_BLE: BmTmpConfig++; |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1882 break; |
| 1003 | 1883 case BM_INIT_NAME: sprintf(TxBuffer,"AT+BNAME=OSTC4-12345\r"); /* Bluetooth name */ |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1884 if(hardwareDataGetPointer()->primarySerial != 0xFFFF) /* module reinit? => restore old name */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1885 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1886 gfx_number_to_string(5,1,&TxBuffer[15],hardwareDataGetPointer()->primarySerial); |
| 992 | 1887 hardware_programmPrimaryBluetoothNameSet(); |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1888 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1889 break; |
| 1003 | 1890 case BM_INIT_SSP_IDO_OFF: BmTmpConfig++; |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1891 break; |
| 1003 | 1892 case BM_INIT_SSP_IDO_ON: BmTmpConfig++; |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1893 break; |
| 1003 | 1894 case BM_INIT_SSP_ID1_OFF: BmTmpConfig++; |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1895 break; |
| 1003 | 1896 case BM_INIT_SSP_ID1_ON: BmTmpConfig++; |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1897 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1898 case BM_INIT_STORE: sprintf(TxBuffer,"AT&W\r"); /* write settings into eeprom */ |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1899 break; |
| 1003 | 1900 case BM_INIT_RESTART: sprintf(TxBuffer,"AT+RESET\r"); /* reboot module */ |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1901 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1902 case BM_INIT_DONE: BmTmpConfig = BM_CONFIG_ECHO; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1903 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1904 default: |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1905 break; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1906 } |
| 1003 | 1907 #endif |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1908 |
| 1003 | 1909 if(TxBuffer[0] != 0) /* forward command to module */ |
| 1910 { | |
| 1911 CmdSize = strlen(TxBuffer); | |
| 1912 if(HAL_UART_Transmit(&UartHandle, (uint8_t*)TxBuffer,CmdSize, 2000) == HAL_OK) | |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1913 { |
| 1003 | 1914 result = tComm_CheckAnswerOK(); |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1915 |
| 1003 | 1916 if((BmTmpConfig == BM_CONFIG_BAUD) && (result == HAL_OK) && (UartHandle.Init.BaudRate != 460800)) /* is com already switched to fast speed? */ |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1917 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1918 HAL_UART_DeInit(&UartHandle); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1919 HAL_Delay(1); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1920 UartHandle.Init.BaudRate = 460800; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1921 HAL_UART_Init(&UartHandle); |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1922 } |
| 1003 | 1923 else if((BmTmpConfig == BM_CONFIG_BAUD) && (result == HAL_OK) && (UartHandle.Init.BaudRate == 460800)) /* This shut not happen because default speed is 115200 => update module configuration */ |
| 1924 { | |
| 1925 tComm_GetBTCmdStr(BT_CMD_BAUDRATE_115, TxBuffer); | |
| 1926 | |
| 1927 CmdSize = strlen(TxBuffer); | |
| 1928 HAL_UART_Transmit(&UartHandle, (uint8_t*)TxBuffer,CmdSize, 2000); | |
| 1929 HAL_UART_DeInit(&UartHandle); | |
| 1930 HAL_Delay(10); | |
| 1931 UartHandle.Init.BaudRate = 115200; | |
| 1932 HAL_UART_Init(&UartHandle); | |
| 1933 sprintf(TxBuffer,"AT&W\r"); /* write configuration */ | |
| 1934 CmdSize = strlen(TxBuffer); | |
| 1935 HAL_UART_Transmit(&UartHandle, (uint8_t*)TxBuffer,CmdSize, 2000); | |
| 1936 } | |
| 1937 if(result == HAL_OK) | |
| 1938 { | |
| 1939 BmTmpConfig++; | |
| 1940 cmdStartTick = HAL_GetTick(); | |
| 1941 if(BmTmpConfig == BM_CONFIG_RETRY) | |
| 1942 { | |
| 1943 BmTmpConfig = BM_CONFIG_DONE; | |
| 1944 } | |
| 1945 } | |
| 1946 if(BmTmpConfig == BM_CONFIG_ECHO) | |
| 1947 { | |
| 1948 BmTmpConfig = BM_CONFIG_DONE; | |
| 1949 ConfigRetryCnt = 0; | |
| 1950 RestartModule = 1; | |
| 1951 } | |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1952 } |
| 1003 | 1953 } |
| 1954 else /* no command for the configuration step found => skip step */ | |
| 1955 { | |
| 1956 if((BmTmpConfig > BM_CONFIG_OFF) && (BmTmpConfig < BM_CONFIG_DONE)) | |
| 1957 { | |
| 1958 BmTmpConfig++; | |
| 1959 } | |
| 1960 } | |
| 1961 if(result != HAL_OK) | |
| 1962 { | |
| 1963 ConfigRetryCnt++; | |
| 1964 if(ConfigRetryCnt > 3) /* Configuration failed => switch off module */ | |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1965 { |
| 1003 | 1966 MX_Bluetooth_PowerOff(); |
| 1967 if(RestartModule) | |
| 1968 { | |
| 1969 RestartModule = 0; /* only one try */ | |
| 1970 ConfigRetryCnt = 200; /* used for delay to startup module again */ | |
| 1971 | |
| 1972 if((BmTmpConfig == BM_CONFIG_ECHO) || (BmTmpConfig == BM_INIT_ECHO)) /* the module did not answer even once => try again with alternative baud rate */ | |
| 1973 { | |
| 1974 HAL_UART_DeInit(&UartHandle); | |
| 1975 HAL_Delay(1); | |
| 1976 UartHandle.Init.BaudRate = 460800; | |
| 1977 HAL_UART_Init(&UartHandle); | |
| 1978 } | |
| 1979 BmTmpConfig = BM_CONFIG_RETRY; | |
| 1980 } | |
| 1981 else /* even restarting module failed => switch bluetooth off */ | |
| 1982 { | |
| 1983 ConfigRetryCnt = 0; | |
| 1984 BmTmpConfig = BM_CONFIG_OFF; | |
| 1985 } | |
|
985
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1986 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1987 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1988 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1989 return result; |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1990 } |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1991 |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1992 static void tComm_Error_Handler(void) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1993 { |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1994 while(1) |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1995 {} |
|
aeafa631147d
Exchange shared files with Bootloader specific mini version
Ideenmodellierer
parents:
diff
changeset
|
1996 } |
