@@ -152,7 +152,7 @@ int NiclaSenseEnv::UARTBaudRate() {
152152 return baudRateMap[uartControlRegisterData];
153153}
154154
155- void NiclaSenseEnv::setUARTBaudRate (int baudRate) {
155+ bool NiclaSenseEnv::setUARTBaudRate (int baudRate, bool persist ) {
156156 int baudRateIndex = baudRateNativeValue (baudRate);
157157 if (baudRateIndex == -1 ) {
158158 return ; // Baud rate not found
@@ -162,28 +162,44 @@ void NiclaSenseEnv::setUARTBaudRate(int baudRate) {
162162 if ((uartControlRegisterData & 7 ) == baudRateIndex) {
163163 return ; // Value is already the same
164164 }
165- writeToRegister (UART_CONTROL_REGISTER_INFO, (uartControlRegisterData & ~7 ) | baudRateIndex);
165+ if (!writeToRegister (UART_CONTROL_REGISTER_INFO, (uartControlRegisterData & ~7 ) | baudRateIndex)){
166+ return false ;
167+ }
168+
169+ if (persist) {
170+ return persistRegister (UART_CONTROL_REGISTER_INFO);
171+ }
172+
173+ return true ;
166174}
167175
168176bool NiclaSenseEnv::isUARTCSVOutputEnabled () {
169177 uint8_t boardControlRegisterData = readFromRegister<uint8_t >(CONTROL_REGISTER_INFO);
170178 return (boardControlRegisterData & (1 << 1 )) != 0 ;
171179}
172180
173- void NiclaSenseEnv::setUARTCSVOutputEnabled (bool enabled) {
181+ bool NiclaSenseEnv::setUARTCSVOutputEnabled (bool enabled, bool persist ) {
174182 uint8_t boardControlRegisterData = readFromRegister<uint8_t >(CONTROL_REGISTER_INFO);
175183 if ((boardControlRegisterData & 2 ) == static_cast <int >(enabled)) {
176184 return ; // Value is already the same
177185 }
178- writeToRegister (CONTROL_REGISTER_INFO, (boardControlRegisterData & ~2 ) | (enabled << 1 ));
186+ if (!writeToRegister (CONTROL_REGISTER_INFO, (boardControlRegisterData & ~2 ) | (enabled << 1 ))){
187+ return false ;
188+ }
189+
190+ if (persist) {
191+ return persistRegister (CONTROL_REGISTER_INFO);
192+ }
193+
194+ return true ;
179195}
180196
181197char NiclaSenseEnv::CSVDelimiter () {
182198 uint8_t csvDelimiterRegisterData = readFromRegister<uint8_t >(CSV_DELIMITER_REGISTER_INFO);
183199 return static_cast <char >(csvDelimiterRegisterData);
184200}
185201
186- void NiclaSenseEnv::setCSVDelimiter (char delimiter) {
202+ bool NiclaSenseEnv::setCSVDelimiter (char delimiter, bool persist ) {
187203 char currentDelimiter = CSVDelimiter ();
188204 if (currentDelimiter == delimiter) {
189205 return ; // Value is already the same
@@ -199,23 +215,39 @@ void NiclaSenseEnv::setCSVDelimiter(char delimiter) {
199215 }
200216
201217 // Use ASCII code of the delimiter character
202- writeToRegister (CSV_DELIMITER_REGISTER_INFO, static_cast <uint8_t >(delimiter));
218+ if (!writeToRegister (CSV_DELIMITER_REGISTER_INFO, static_cast <uint8_t >(delimiter))){
219+ return false ;
220+ }
221+
222+ if (persist) {
223+ return persistRegister (CSV_DELIMITER_REGISTER_INFO);
224+ }
225+
226+ return true ;
203227}
204228
205229bool NiclaSenseEnv::isDebuggingEnabled () {
206230 uint8_t boardControlRegisterData = readFromRegister<uint8_t >(CONTROL_REGISTER_INFO);
207231 return (boardControlRegisterData & 1 ) != 0 ;
208232}
209233
210- void NiclaSenseEnv::setDebuggingEnabled (bool enabled) {
234+ bool NiclaSenseEnv::setDebuggingEnabled (bool enabled, bool persist ) {
211235 uint8_t boardControlRegisterData = readFromRegister<uint8_t >(CONTROL_REGISTER_INFO);
212236 if ((boardControlRegisterData & 1 ) == static_cast <int >(enabled)) {
213237 return ; // Value is already the same
214238 }
215- writeToRegister (CONTROL_REGISTER_INFO, (boardControlRegisterData & ~1 ) | enabled);
239+ if (!writeToRegister (CONTROL_REGISTER_INFO, (boardControlRegisterData & ~1 ) | enabled)){
240+ return false ;
241+ }
242+
243+ if (persist){
244+ return persistRegister (CONTROL_REGISTER_INFO);
245+ }
246+
247+ return true ;
216248}
217249
218- void NiclaSenseEnv::setDeviceAddress (int address) {
250+ bool NiclaSenseEnv::setDeviceAddress (int address, bool persist ) {
219251 if (address < 0 || address > 127 ) {
220252 return ; // Invalid address
221253 }
@@ -224,9 +256,18 @@ void NiclaSenseEnv::setDeviceAddress(int address) {
224256 if ((addressRegisterData & 127 ) == address) {
225257 return ; // Value is already the same
226258 }
227- writeToRegister (SLAVE_ADDRESS_REGISTER_INFO, (addressRegisterData & ~127 ) | address);
259+ if (!writeToRegister (SLAVE_ADDRESS_REGISTER_INFO, (addressRegisterData & ~127 ) | address)){
260+ return false ;
261+ }
262+
228263 delayMicroseconds (100 ); // Wait for the new address to take effect
229264 this ->i2cDeviceAddress = address;
265+
266+ if (persist) {
267+ return persistRegister (SLAVE_ADDRESS_REGISTER_INFO);
268+ }
269+
270+ return true ;
230271}
231272
232273// Function to get the index for a given baud rate
0 commit comments