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