41
41
#define SLEW_MASK_WEST B1000
42
42
#define SLEW_MASK_ANY B1111
43
43
44
+ // EPROM constants
45
+ #define EEPROM_MAGIC_MASK 0xFE00 // If these bits are set to 0xBE00, something has been written to the EEPROM
46
+ #define EEPROM_MAGIC_EXTENDED_MASK 0xFE00 // If these bits are set to 0xBF00, an extended value has been written to the EEPROM
47
+ #define EEPROM_MAGIC_MARKER 0xBE00
48
+ #define EEPROM_MAGIC_EXTENDED_MARKER 0xBF00
49
+
50
+ // The markjer bits for the first 8 values stored in EEPROM.
51
+ #define EEPROM_RA_STEPS_BIT 0x0001
52
+ #define EEPROM_DEC_STEPS_BIT 0x0002
53
+ #define EEPROM_SPEED_FACTOR_BIT 0x0004
54
+ #define EEPROM_BACKLASH_STEPS_BIT 0x0008
55
+ #define EEPROM_LATITUDE_BIT 0x0010
56
+ #define EEPROM_LONGITUDE_BIT 0x0020
57
+ #define EEPROM_PITCH_OFFSET_BIT 0x0040
58
+ #define EEPROM_ROLL_OFFSET_BIT 0x0080
59
+
60
+ // The mask bits to test what is stored
61
+ #define EEPROM_MAGIC_MASK_RA_STEPS (EEPROM_MAGIC_MASK | EEPROM_RA_STEPS_BIT)
62
+ #define EEPROM_MAGIC_MASK_DEC_STEPS (EEPROM_MAGIC_MASK | EEPROM_DEC_STEPS_BIT)
63
+ #define EEPROM_MAGIC_MASK_SPEED_FACTOR (EEPROM_MAGIC_MASK | EEPROM_SPEED_FACTOR_BIT)
64
+ #define EEPROM_MAGIC_MASK_BACKLASH_STEPS (EEPROM_MAGIC_MASK | EEPROM_BACKLASH_STEPS_BIT)
65
+ #define EEPROM_MAGIC_MASK_LATITUDE (EEPROM_MAGIC_MASK | EEPROM_LATITUDE_BIT)
66
+ #define EEPROM_MAGIC_MASK_LONGITUDE (EEPROM_MAGIC_MASK | EEPROM_LONGITUDE_BIT)
67
+ #define EEPROM_MAGIC_MASK_PITCH_OFFSET (EEPROM_MAGIC_MASK | EEPROM_PITCH_OFFSET_BIT)
68
+ #define EEPROM_MAGIC_MASK_ROLL_OFFSET (EEPROM_MAGIC_MASK | EEPROM_ROLL_OFFSET_BIT)
69
+
70
+ // The result bits (after masking with above mask) to indicate what is stored
71
+ #define EEPROM_RA_STEPS_MARKER_BIT (EEPROM_MAGIC_MARKER | EEPROM_RA_STEPS_BIT)
72
+ #define EEPROM_DEC_STEPS_MARKER_BIT (EEPROM_MAGIC_MARKER | EEPROM_DEC_STEPS_BIT)
73
+ #define EEPROM_SPEED_FACTOR_MARKER_BIT (EEPROM_MAGIC_MARKER | EEPROM_SPEED_FACTOR_BIT)
74
+ #define EEPROM_BACKLASH_STEPS_MARKER_BIT (EEPROM_MAGIC_MARKER | EEPROM_BACKLASH_STEPS_BIT)
75
+ #define EEPROM_LATITUDE_MARKER_BIT (EEPROM_MAGIC_MARKER | EEPROM_LATITUDE_BIT)
76
+ #define EEPROM_LONGITUDE_MARKER_BIT (EEPROM_MAGIC_MARKER | EEPROM_LONGITUDE_BIT)
77
+ #define EEPROM_PITCH_OFFSET_MARKER_BIT (EEPROM_MAGIC_MARKER | EEPROM_PITCH_OFFSET_BIT)
78
+ #define EEPROM_ROLL_OFFSET_MARKER_BIT (EEPROM_MAGIC_MARKER | EEPROM_ROLL_OFFSET_BIT)
79
+
80
+ // Extended bits
81
+ #define EEPROM_PARKING_POS_MARKER_BIT 0x0001
82
+
44
83
const char * formatStringsDEC[] = {
45
84
" " ,
46
85
" %c%02d@ %02d' %02d\" " , // LCD Menu w/ cursor
@@ -196,15 +235,15 @@ void Mount::readPersistentData()
196
235
197
236
LOGV2 (DEBUG_INFO, F (" Mount: EEPROM: Magic Marker: %x " ), marker);
198
237
199
- if ((marker & 0xFE01 ) == 0xBE01 ) {
238
+ if ((marker & EEPROM_MAGIC_MASK_RA_STEPS ) == EEPROM_RA_STEPS_MARKER_BIT ) {
200
239
_stepsPerRADegree = EPROMStore::read (6 ) + EPROMStore::read (7 ) * 256 ;
201
240
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM: RA Marker OK! RA steps/deg is %d" ), _stepsPerRADegree);
202
241
}
203
242
else {
204
243
LOGV1 (DEBUG_INFO,F (" Mount: EEPROM: No stored value for RA steps" ));
205
244
}
206
245
207
- if ((marker & 0xFE02 ) == 0xBE02 ) {
246
+ if ((marker & EEPROM_MAGIC_MASK_DEC_STEPS ) == EEPROM_DEC_STEPS_MARKER_BIT ) {
208
247
_stepsPerDECDegree = EPROMStore::read (8 ) + EPROMStore::read (9 ) * 256 ;
209
248
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM: DEC Marker OK! DEC steps/deg is %d" ), _stepsPerDECDegree);
210
249
}
@@ -213,7 +252,7 @@ void Mount::readPersistentData()
213
252
}
214
253
215
254
float speed = 1.0 ;
216
- if ((marker & 0xFE04 ) == 0xBE04 ) {
255
+ if ((marker & EEPROM_MAGIC_MASK_SPEED_FACTOR ) == EEPROM_SPEED_FACTOR_MARKER_BIT ) {
217
256
int adjust = EPROMStore::read (0 ) + EPROMStore::read (3 ) * 256 ;
218
257
speed = 1.0 + 1.0 * adjust / 10000.0 ;
219
258
LOGV3 (DEBUG_INFO,F (" Mount: EEPROM: Speed Marker OK! Speed adjust is %d, speedFactor is %f" ), adjust, speed);
@@ -222,23 +261,23 @@ void Mount::readPersistentData()
222
261
LOGV1 (DEBUG_INFO,F (" Mount: EEPROM: No stored value for speed factor" ));
223
262
}
224
263
225
- if ((marker & 0xFE08 ) == 0xBE08 ) {
264
+ if ((marker & EEPROM_MAGIC_MASK_BACKLASH_STEPS ) == EEPROM_BACKLASH_STEPS_MARKER_BIT ) {
226
265
_backlashCorrectionSteps = EPROMStore::read (10 ) + EPROMStore::read (11 ) * 256 ;
227
266
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM: Backlash Steps Marker OK! Backlash correction is %d" ), _backlashCorrectionSteps);
228
267
}
229
268
else {
230
269
LOGV1 (DEBUG_INFO,F (" Mount: EEPROM: No stored value for backlash correction" ));
231
270
}
232
271
233
- if ((marker & 0xFE10 ) == 0xBE10 ) {
272
+ if ((marker & EEPROM_MAGIC_MASK_LATITUDE ) == EEPROM_LATITUDE_MARKER_BIT ) {
234
273
_latitude = 1 .0f * EPROMStore::readInt16 (12 , 13 ) / 100 .0f ;
235
274
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM: Latitude Marker OK! Latitude is %f" ), _latitude);
236
275
}
237
276
else {
238
277
LOGV1 (DEBUG_INFO,F (" Mount: EEPROM: No stored value for latitude" ));
239
278
}
240
279
241
- if ((marker & 0xFE20 ) == 0xBE20 ) {
280
+ if ((marker & EEPROM_MAGIC_MASK_LONGITUDE ) == EEPROM_LONGITUDE_MARKER_BIT ) {
242
281
_longitude = 1 .0f * EPROMStore::readInt16 (14 , 15 ) / 100 .0f ;
243
282
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM: Longitude Marker OK! Longitude is %f" ), _longitude);
244
283
}
@@ -247,7 +286,7 @@ void Mount::readPersistentData()
247
286
}
248
287
249
288
#if USE_GYRO_LEVEL == 1
250
- if ((marker & 0xFE40 ) == 0xBE40 ) {
289
+ if ((marker & EEPROM_MAGIC_MASK_PITCH_OFFSET ) == EEPROM_PITCH_OFFSET_MARKER_BIT ) {
251
290
uint16_t angleValue = EPROMStore::readInt16 (17 , 18 );
252
291
_pitchCalibrationAngle = (((long )angleValue) - 16384 ) / 100.0 ;
253
292
LOGV3 (DEBUG_INFO,F (" Mount: EEPROM: Pitch Offset Marker OK! Pitch Offset is %x (%f)" ), angleValue, _pitchCalibrationAngle);
@@ -256,7 +295,7 @@ void Mount::readPersistentData()
256
295
LOGV1 (DEBUG_INFO,F (" Mount: EEPROM: No stored value for Pitch Offset" ));
257
296
}
258
297
259
- if ((marker & 0xFE80 ) == 0xBE80 ) {
298
+ if ((marker & EEPROM_MAGIC_MASK_ROLL_OFFSET ) == EEPROM_ROLL_OFFSET_MARKER_BIT ) {
260
299
uint16_t angleValue = EPROMStore::readInt16 (19 ,20 );
261
300
_rollCalibrationAngle = (((long )angleValue) - 16384 ) / 100.0 ;
262
301
LOGV3 (DEBUG_INFO,F (" Mount: EEPROM: Roll Offset Marker OK! Roll Offset is %x (%f)" ), angleValue, _rollCalibrationAngle);
@@ -266,11 +305,11 @@ void Mount::readPersistentData()
266
305
}
267
306
#endif
268
307
269
- if ((marker & 0xFF00 ) == 0xBF00 ) {
308
+ if ((marker & EEPROM_MAGIC_EXTENDED_MASK ) == EEPROM_MAGIC_EXTENDED_MARKER ) {
270
309
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM: Magic Marker is %x, reading extended" ), marker);
271
310
int16_t nextMarker = EPROMStore::readInt16 (21 ,22 );
272
311
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM: ExtendedMarker is %x" ), nextMarker);
273
- if (nextMarker & 0x0001 ){
312
+ if (nextMarker & EEPROM_PARKING_POS_MARKER_BIT ){
274
313
_raParkingPos = EPROMStore::readInt32 (23 ); // 23-26
275
314
_decParkingPos = EPROMStore::readInt32 (27 ); // 27-30
276
315
LOGV3 (DEBUG_INFO,F (" Mount: EEPROM: Parking position read as R:%l, D:%l" ), _raParkingPos, _decParkingPos);
@@ -297,12 +336,12 @@ void Mount::writePersistentData(int which, long val)
297
336
bool writeExtended = false ;
298
337
299
338
// If we're written something before...
300
- uint8_t magicMarker = EPROMStore::read (5 );
301
- LOGV5 (DEBUG_INFO,F (" Mount: EEPROM Write(%d): Marker is %x, flag is %x (%d) " ), which, magicMarker, flag, flag );
302
- if ((magicMarker & 0xFE ) == 0xBE ) {
339
+ uint16_t magicMarker = EPROMStore::read (5 ) * 256 + EPROMStore::read ( 4 );
340
+ LOGV3 (DEBUG_INFO,F (" Mount: EEPROM Write(%d): Marker is %x" ), which, magicMarker);
341
+ if ((magicMarker & EEPROM_MAGIC_MASK ) == EEPROM_MAGIC_MARKER ) {
303
342
// ... read the current state ...
304
343
flag = EPROMStore::read (4 );
305
- if ((magicMarker & 0xFF ) == 0xBF ) {
344
+ if ((magicMarker & EEPROM_MAGIC_EXTENDED_MASK ) == EEPROM_MAGIC_EXTENDED_MARKER ) {
306
345
extendedFlag = EPROMStore::readInt16 (21 , 22 );
307
346
LOGV3 (DEBUG_INFO,F (" Mount: EEPROM Write: Marker is 0xBF, extended flag is %x (%d)" ), extendedFlag, extendedFlag);
308
347
}
@@ -314,7 +353,7 @@ void Mount::writePersistentData(int which, long val)
314
353
case EEPROM_RA:
315
354
{
316
355
// ... set bit 0 to indicate RA value has been written to 6/7
317
- flag |= 0x01 ;
356
+ flag |= EEPROM_RA_STEPS_BIT ;
318
357
loByteLocation = 6 ;
319
358
hiByteLocation = 7 ;
320
359
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM Write: Updating RA steps to %d" ), val);
@@ -324,7 +363,7 @@ void Mount::writePersistentData(int which, long val)
324
363
case EEPROM_DEC:
325
364
{
326
365
// ... set bit 1 to indicate DEC value has been written to 8/9
327
- flag |= 0x02 ;
366
+ flag |= EEPROM_DEC_STEPS_BIT ;
328
367
loByteLocation = 8 ;
329
368
hiByteLocation = 9 ;
330
369
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM Write: Updating DEC steps to %d" ), val);
@@ -334,7 +373,7 @@ void Mount::writePersistentData(int which, long val)
334
373
case EEPROM_SPEED:
335
374
{
336
375
// ... set bit 3 to indicate speed factor value has been written to 0/3
337
- flag |= 0x04 ;
376
+ flag |= EEPROM_SPEED_FACTOR_BIT ;
338
377
loByteLocation = 0 ;
339
378
hiByteLocation = 3 ;
340
379
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM Write: Updating Speed factor to %d" ), val);
@@ -344,7 +383,7 @@ void Mount::writePersistentData(int which, long val)
344
383
case EEPROM_BACKLASH:
345
384
{
346
385
// ... set bit 4 to indicate backlash has been written to 10/11
347
- flag |= 0x08 ;
386
+ flag |= EEPROM_BACKLASH_STEPS_BIT ;
348
387
loByteLocation = 10 ;
349
388
hiByteLocation = 11 ;
350
389
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM Write: Updating Backlash to %d" ), val);
@@ -354,7 +393,7 @@ void Mount::writePersistentData(int which, long val)
354
393
case EEPROM_LATITUDE:
355
394
{
356
395
// ... set bit 5 to indicate Latitude x100 has been written to 12/13
357
- flag |= 0x10 ;
396
+ flag |= EEPROM_LATITUDE_BIT ;
358
397
loByteLocation = 12 ;
359
398
hiByteLocation = 13 ;
360
399
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM Write: Updating Latitude to %d" ), val);
@@ -364,7 +403,7 @@ void Mount::writePersistentData(int which, long val)
364
403
case EEPROM_LONGITUDE:
365
404
{
366
405
// ... set bit 6 to indicate Longitude x100 has been written to 14/15
367
- flag |= 0x20 ;
406
+ flag |= EEPROM_LONGITUDE_BIT ;
368
407
loByteLocation = 14 ;
369
408
hiByteLocation = 15 ;
370
409
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM Write: Updating Longitude to %d" ), val);
@@ -374,7 +413,7 @@ void Mount::writePersistentData(int which, long val)
374
413
case EEPROM_PITCH_OFFSET:
375
414
{
376
415
// ... set bit 7 to indicate pitch offset angle value has been written to 17/18
377
- flag |= 0x40 ;
416
+ flag |= EEPROM_PITCH_OFFSET_BIT ;
378
417
loByteLocation = 17 ;
379
418
hiByteLocation = 18 ;
380
419
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM Write: Updating Pitch Offset to %d" ), val);
@@ -384,7 +423,7 @@ void Mount::writePersistentData(int which, long val)
384
423
case EEPROM_ROLL_OFFSET:
385
424
{
386
425
// ... set bit 8 to indicate pitch offset angle value has been written to 19/20
387
- flag |= 0x80 ;
426
+ flag |= EEPROM_ROLL_OFFSET_BIT ;
388
427
loByteLocation = 19 ;
389
428
hiByteLocation = 20 ;
390
429
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM Write: Updating Roll Offset to %d" ), val);
@@ -396,7 +435,7 @@ void Mount::writePersistentData(int which, long val)
396
435
{
397
436
// ... set bit 8 to indicate pitch offset angle value has been written to 19/20
398
437
writeExtended = true ;
399
- extendedFlag |= 0x0001 ;
438
+ extendedFlag |= EEPROM_PARKING_POS_MARKER_BIT ;
400
439
if (which == EEPROM_RA_PARKING_POS ){
401
440
EPROMStore::updateInt32 (23 , val);
402
441
LOGV2 (DEBUG_INFO,F (" Mount: EEPROM Write: Updating RA Parking Pos to %l at 23-26" ), val);
@@ -412,13 +451,13 @@ void Mount::writePersistentData(int which, long val)
412
451
413
452
if (writeExtended) {
414
453
LOGV3 (DEBUG_INFO,F (" Mount: EEPROM Write: New Marker is 0xBF, extended flag is %x (%d)" ), extendedFlag, extendedFlag);
415
- EPROMStore::update (5 , 0xBF );
454
+ EPROMStore::update (5 , EEPROM_MAGIC_EXTENDED_MARKER >> 8 );
416
455
EPROMStore::updateInt16 (21 , 22 , extendedFlag);
417
456
}
418
457
else {
419
458
LOGV4 (DEBUG_INFO,F (" Mount: EEPROM Write: New Marker is %d, flag is %x (%d)" ), magicMarker, flag, flag);
420
459
EPROMStore::update (4 , flag);
421
- EPROMStore::update (5 , magicMarker);
460
+ EPROMStore::update (5 , magicMarker >> 8 );
422
461
423
462
EPROMStore::update (loByteLocation, val & 0x00FF );
424
463
EPROMStore::update (hiByteLocation, (val >> 8 ) & 0x00FF );
0 commit comments