@ -34,18 +34,6 @@ struct row_value{
@@ -34,18 +34,6 @@ struct row_value{
uint8_t repeats : 3 ;
} ;
// 76 bytes - 8 bits per 37 row_start + 8 bits per 37 row_length
struct row_keys {
// The highest row_start is 168
uint8_t row_start [ 37 ] ;
// The highest length is 54 which fits in 6 bits,
// but the struct will pad to the nearest byte anyway
// so there is no savings by specifying length
uint8_t row_length [ 37 ] ;
} ;
// 730 bytes
static const uint8_t exceptions [ 10 ] [ 73 ] PROGMEM = \
{ \
@ -79,17 +67,19 @@ static const uint8_t exception_signs[10][10] PROGMEM = \
@@ -79,17 +67,19 @@ static const uint8_t exception_signs[10][10] PROGMEM = \
// 76 bytes - Instance of the struct defined above
// I decided NOT to store this in PROGMEM because it is small and the expense of pulling
// the value out of the PROGMEM is too high
static const row_keys declination_keys = \
static const uint8_t declination_keys [ 2 ] [ 37 ] = \
{ \
// Row start values
{ 36 , 30 , 25 , 21 , 18 , 16 , 14 , 12 , 11 , 10 , 9 , 9 , 9 , 8 , 8 , 8 , 7 , 6 , 6 , 5 , 4 , 4 , 4 , 3 , 4 , 4 , 4 } , \
{ 39 , 37 , 33 , 35 , 37 , 35 , 37 , 36 , 39 , 34 , 41 , 42 , 41 , 28 , 38 , 38 , 41 , 50 , 48 , 37 , 35 , 33 , 43 , 49 , 48 , 47 , 54 } , \
// Row length values
{ 39 , 36 , 33 , 35 , 37 , 35 , 37 , 36 , 39 , 34 , 41 , 42 , 40 , 28 , 37 , 39 , 42 , 50 , 49 , 38 , 36 , 33 , 43 , 50 , 48 , 47 , 54 } \
} ;
// 1075 total values @ 1 bytes each = 1075 bytes
static const row_value declination_values [ ] PROGMEM = \
{ \
{ 0 , 0 , 4 } , { 1 , 1 , 0 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 0 , 0 , 2 } , { 1 , 1 , 3 } , { 2 , 1 , 1 } , { 3 , 1 , 3 } , { 4 , 1 , 1 } , { 3 , 1 , 1 } , { 2 , 1 , 1 } , { 3 , 1 , 0 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 2 , 1 , 1 } , { 1 , 1 , 0 } , { 2 , 1 , 0 } , { 3 , 1 , 4 } , { 4 , 1 , 1 } , { 3 , 1 , 0 } , { 4 , 1 , 0 } , { 3 , 1 , 2 } , { 2 , 1 , 2 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 3 , 0 , 0 } , { 4 , 0 , 0 } , { 6 , 0 , 0 } , { 8 , 0 , 0 } , { 11 , 0 , 0 } , { 13 , 0 , 1 } , { 10 , 0 , 0 } , { 9 , 0 , 0 } , { 7 , 0 , 0 } , { 5 , 0 , 0 } , { 4 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 2 } , \
{ 0 , 0 , 6 } , { 1 , 1 , 0 } , { 0 , 0 , 6 } , { 1 , 1 , 2 } , { 2 , 1 , 0 } , { 3 , 1 , 2 } , { 4 , 1 , 2 } , { 3 , 1 , 3 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 2 , 1 , 0 } , { 1 , 1 , 2 } , { 2 , 1 , 2 } , { 3 , 1 , 3 } , { 4 , 1 , 0 } , { 3 , 1 , 3 } , { 2 , 1 , 1 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 0 } , { 4 , 0 , 0 } , { 5 , 0 , 0 } , { 6 , 0 , 0 } , { 7 , 0 , 0 } , { 8 , 0 , 0 } , { 9 , 0 , 0 } , { 8 , 0 , 0 } , { 6 , 0 , 0 } , { 7 , 0 , 0 } , { 6 , 0 , 0 } , { 4 , 0 , 1 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 0 , 0 , 0 } , \
{ 0 , 0 , 6 } , { 1 , 1 , 0 } , { 0 , 0 , 6 } , { 1 , 1 , 2 } , { 2 , 1 , 0 } , { 3 , 1 , 2 } , { 4 , 1 , 2 } , { 3 , 1 , 3 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 2 , 1 , 0 } , { 1 , 1 , 2 } , { 2 , 1 , 2 } , { 3 , 1 , 3 } , { 4 , 1 , 0 } , { 3 , 1 , 3 } , { 2 , 1 , 1 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 0 } , { 4 , 0 , 0 } , { 5 , 0 , 0 } , { 6 , 0 , 0 } , { 7 , 0 , 0 } , { 8 , 0 , 0 } , { 9 , 0 , 0 } , { 8 , 0 , 0 } , { 6 , 0 , 0 } , { 7 , 0 , 0 } , { 6 , 0 , 0 } , { 4 , 0 , 1 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , \
{ 0 , 0 , 1 } , { 1 , 0 , 0 } , { 0 , 0 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 6 } , { 1 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 1 } , { 2 , 1 , 1 } , { 3 , 1 , 0 } , { 4 , 1 , 3 } , { 3 , 1 , 0 } , { 4 , 1 , 0 } , { 3 , 1 , 1 } , { 2 , 1 , 0 } , { 1 , 1 , 7 } , { 2 , 1 , 0 } , { 3 , 1 , 6 } , { 2 , 1 , 0 } , { 1 , 1 , 2 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 1 } , { 5 , 0 , 1 } , { 6 , 0 , 0 } , { 7 , 0 , 0 } , { 6 , 0 , 2 } , { 4 , 0 , 2 } , { 3 , 0 , 1 } , { 2 , 0 , 2 } , { 1 , 0 , 1 } , \
{ 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 7 } , { 0 , 0 , 5 } , { 1 , 1 , 1 } , { 2 , 1 , 1 } , { 3 , 1 , 0 } , { 4 , 1 , 5 } , { 3 , 1 , 1 } , { 1 , 1 , 0 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 2 , 1 , 2 } , { 3 , 1 , 1 } , { 2 , 1 , 0 } , { 3 , 1 , 0 } , { 2 , 1 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 1 } , { 4 , 0 , 1 } , { 5 , 0 , 4 } , { 4 , 0 , 0 } , { 3 , 0 , 1 } , { 4 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 2 } , { 1 , 0 , 2 } , \
{ 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 7 } , { 0 , 0 , 5 } , { 1 , 1 , 2 } , { 2 , 1 , 0 } , { 4 , 1 , 0 } , { 3 , 1 , 0 } , { 5 , 1 , 0 } , { 3 , 1 , 0 } , { 5 , 1 , 0 } , { 4 , 1 , 1 } , { 3 , 1 , 0 } , { 2 , 1 , 1 } , { 1 , 1 , 2 } , { 0 , 0 , 2 } , { 1 , 0 , 0 } , { 0 , 0 , 1 } , { 1 , 1 , 0 } , { 2 , 1 , 2 } , { 3 , 1 , 0 } , { 2 , 1 , 1 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 1 } , { 3 , 0 , 1 } , { 4 , 0 , 0 } , { 5 , 0 , 0 } , { 4 , 0 , 0 } , { 5 , 0 , 0 } , { 4 , 0 , 0 } , { 3 , 0 , 1 } , { 1 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 4 } , { 1 , 0 , 3 } , \
@ -100,18 +90,18 @@ static const row_value declination_values[] PROGMEM = \
@@ -100,18 +90,18 @@ static const row_value declination_values[] PROGMEM = \
{ 0 , 0 , 7 } , { 0 , 0 , 5 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 3 , 1 , 3 } , { 4 , 1 , 1 } , { 3 , 1 , 1 } , { 1 , 1 , 1 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 3 } , { 3 , 0 , 0 } , { 2 , 0 , 3 } , { 0 , 0 , 2 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 7 } , \
{ 0 , 0 , 6 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 4 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 3 , 1 , 0 } , { 2 , 1 , 0 } , { 4 , 1 , 0 } , { 3 , 1 , 0 } , { 4 , 1 , 1 } , { 2 , 1 , 2 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 7 } , { 2 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 1 } , { 1 , 1 , 1 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 2 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 2 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , \
{ 0 , 0 , 7 } , { 0 , 0 , 3 } , { 1 , 1 , 0 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 3 , 1 , 0 } , { 2 , 1 , 0 } , { 4 , 1 , 0 } , { 3 , 1 , 0 } , { 4 , 1 , 0 } , { 3 , 1 , 0 } , { 2 , 1 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 1 } , { 3 , 0 , 0 } , { 2 , 0 , 2 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 2 } , { 0 , 0 , 3 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 6 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , \
{ 0 , 0 , 2 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 0 , 0 , 3 } , { 1 , 1 , 0 } , { 0 , 0 , 2 } , { 1 , 1 , 2 } , { 2 , 1 , 0 } , { 3 , 1 , 0 } , { 2 , 1 , 0 } , { 3 , 1 , 0 } , { 4 , 1 , 0 } , { 3 , 1 , 1 } , { 2 , 1 , 0 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 2 } , { 3 , 0 , 0 } , { 2 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 5 } , { 1 , 0 , 7 } , { 0 , 0 , 0 } , \
{ 0 , 0 , 2 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 0 , 0 , 3 } , { 1 , 1 , 0 } , { 0 , 0 , 2 } , { 1 , 1 , 2 } , { 2 , 1 , 0 } , { 3 , 1 , 0 } , { 2 , 1 , 0 } , { 3 , 1 , 0 } , { 4 , 1 , 0 } , { 3 , 1 , 1 } , { 2 , 1 , 0 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 2 } , { 3 , 0 , 0 } , { 2 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 5 } , { 1 , 0 , 7 } , \
{ 0 , 0 , 5 } , { 1 , 0 , 0 } , { 0 , 0 , 4 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 1 , 1 } , { 2 , 1 , 2 } , { 3 , 1 , 4 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 6 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 2 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 7 } , { 1 , 0 , 7 } , \
{ 0 , 0 , 3 } , { 1 , 0 , 0 } , { 0 , 0 , 7 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 2 , 1 , 3 } , { 3 , 1 , 3 } , { 2 , 1 , 0 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 2 } , { 3 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 1 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 3 } , { 1 , 0 , 0 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 0 , 0 , 3 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 0 } , { 0 , 0 , 0 } , \
{ 0 , 0 , 1 } , { 1 , 0 , 0 } , { 0 , 0 , 2 } , { 1 , 0 , 0 } , { 0 , 0 , 5 } , { 1 , 1 , 2 } , { 2 , 1 , 1 } , { 3 , 1 , 0 } , { 2 , 1 , 0 } , { 3 , 1 , 2 } , { 2 , 1 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 4 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 1 } , { 0 , 0 , 7 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 3 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , \
{ 0 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 3 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 2 , 1 , 2 } , { 3 , 1 , 0 } , { 2 , 1 , 0 } , { 4 , 1 , 0 } , { 3 , 1 , 0 } , { 2 , 1 , 2 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 2 } , { 2 , 0 , 4 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 5 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 4 } , { 2 , 0 , 1 } , \
{ 0 , 0 , 3 } , { 1 , 0 , 0 } , { 0 , 0 , 7 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 2 , 1 , 3 } , { 3 , 1 , 3 } , { 2 , 1 , 0 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 2 } , { 3 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 1 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 3 } , { 1 , 0 , 0 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 0 , 0 , 3 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 0 } , \
{ 0 , 0 , 1 } , { 1 , 0 , 0 } , { 0 , 0 , 2 } , { 1 , 0 , 0 } , { 0 , 0 , 5 } , { 1 , 1 , 2 } , { 2 , 1 , 1 } , { 3 , 1 , 0 } , { 2 , 1 , 0 } , { 3 , 1 , 2 } , { 2 , 1 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 4 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 1 } , { 0 , 0 , 7 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 3 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , \
{ 0 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 3 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 2 , 1 , 2 } , { 3 , 1 , 0 } , { 2 , 1 , 0 } , { 4 , 1 , 0 } , { 3 , 1 , 0 } , { 2 , 1 , 2 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 2 } , { 2 , 0 , 4 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 5 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 4 } , { 2 , 0 , 1 } , { 1 , 0 , 0 } , \
{ 0 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 3 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 2 , 1 , 2 } , { 3 , 1 , 0 } , { 2 , 1 , 0 } , { 3 , 1 , 0 } , { 4 , 1 , 0 } , { 3 , 1 , 0 } , { 2 , 1 , 1 } , { 1 , 1 , 1 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 2 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 2 } , { 1 , 1 , 3 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 2 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , \
{ 0 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 2 , 1 , 0 } , { 3 , 1 , 1 } , { 2 , 1 , 0 } , { 4 , 1 , 1 } , { 3 , 1 , 0 } , { 2 , 1 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 2 } , { 1 , 0 , 0 } , { 2 , 0 , 1 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 2 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 3 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 2 } , { 2 , 1 , 0 } , { 1 , 1 , 1 } , { 0 , 0 , 1 } , { 1 , 0 , 3 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , \
{ 0 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 4 } , { 0 , 0 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 3 , 1 , 3 } , { 4 , 1 , 1 } , { 3 , 1 , 0 } , { 2 , 1 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 2 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 4 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 3 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 4 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 4 } , { 2 , 1 , 1 } , { 1 , 1 , 1 } , { 0 , 0 , 2 } , { 1 , 0 , 1 } , { 2 , 0 , 2 } , { 1 , 0 , 0 } , \
{ 0 , 0 , 0 } , { 2 , 0 , 3 } , { 1 , 0 , 3 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 2 , 1 , 2 } , { 4 , 1 , 0 } , { 3 , 1 , 0 } , { 4 , 1 , 2 } , { 3 , 1 , 1 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 2 } , { 2 , 0 , 4 } , { 1 , 0 , 0 } , { 2 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 2 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 3 } , { 1 , 1 , 4 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 2 , 1 , 2 } , { 1 , 1 , 2 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 1 } , { 1 , 0 , 0 } , { 3 , 0 , 0 } , { 1 , 0 , 0 } , \
{ 0 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 2 , 1 , 0 } , { 3 , 1 , 1 } , { 2 , 1 , 0 } , { 4 , 1 , 1 } , { 3 , 1 , 0 } , { 2 , 1 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 2 } , { 1 , 0 , 0 } , { 2 , 0 , 1 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 2 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 3 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 2 } , { 2 , 1 , 0 } , { 1 , 1 , 1 } , { 0 , 0 , 1 } , { 1 , 0 , 3 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 1 } , \
{ 0 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 4 } , { 0 , 0 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 3 , 1 , 3 } , { 4 , 1 , 1 } , { 3 , 1 , 0 } , { 2 , 1 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 2 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 4 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 3 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 4 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 4 } , { 2 , 1 , 1 } , { 1 , 1 , 1 } , { 0 , 0 , 2 } , { 1 , 0 , 1 } , { 2 , 0 , 2 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , \
{ 0 , 0 , 0 } , { 2 , 0 , 3 } , { 1 , 0 , 3 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 2 , 1 , 2 } , { 4 , 1 , 0 } , { 3 , 1 , 0 } , { 4 , 1 , 2 } , { 3 , 1 , 1 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 2 } , { 2 , 0 , 4 } , { 1 , 0 , 0 } , { 2 , 0 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 2 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 3 } , { 1 , 1 , 4 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 2 , 1 , 2 } , { 1 , 1 , 2 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 1 } , { 1 , 0 , 0 } , { 3 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , \
{ 0 , 0 , 0 } , { 2 , 0 , 4 } , { 1 , 0 , 3 } , { 0 , 0 , 0 } , { 1 , 1 , 2 } , { 3 , 1 , 1 } , { 4 , 1 , 2 } , { 5 , 1 , 0 } , { 4 , 1 , 0 } , { 3 , 1 , 1 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 1 } , { 3 , 0 , 0 } , { 2 , 0 , 2 } , { 1 , 0 , 2 } , { 2 , 0 , 0 } , { 1 , 0 , 5 } , { 0 , 0 , 4 } , { 1 , 1 , 1 } , { 2 , 1 , 4 } , { 3 , 1 , 0 } , { 2 , 1 , 1 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 2 } , { 2 , 0 , 1 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , \
{ 0 , 0 , 0 } , { 2 , 0 , 1 } , { 3 , 0 , 0 } , { 2 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 2 , 1 , 0 } , { 3 , 1 , 1 } , { 5 , 1 , 4 } , { 3 , 1 , 1 } , { 1 , 1 , 1 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 2 , 0 , 1 } , { 1 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 2 } , { 3 , 0 , 0 } , { 2 , 0 , 1 } , { 1 , 0 , 1 } , { 2 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 3 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 2 , 1 , 2 } , { 3 , 1 , 0 } , { 2 , 1 , 0 } , { 3 , 1 , 2 } , { 2 , 1 , 0 } , { 1 , 1 , 1 } , { 0 , 0 , 0 } , { 1 , 0 , 2 } , { 2 , 0 , 1 } , { 3 , 0 , 0 } , { 2 , 0 , 1 } , \
{ 0 , 0 , 0 } , { 3 , 0 , 1 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 1 } , { 2 , 1 , 1 } , { 3 , 1 , 0 } , { 4 , 1 , 0 } , { 6 , 1 , 0 } , { 5 , 1 , 0 } , { 7 , 1 , 0 } , { 6 , 1 , 0 } , { 5 , 1 , 0 } , { 3 , 1 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 3 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 5 } , { 1 , 0 , 2 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 2 , 1 , 0 } , { 3 , 1 , 2 } , { 4 , 1 , 0 } , { 3 , 1 , 0 } , { 4 , 1 , 0 } , { 3 , 1 , 0 } , { 2 , 1 , 1 } , { 1 , 1 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , \
{ 0 , 0 , 0 } , { 3 , 0 , 1 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 1 } , { 0 , 0 , 1 } , { 2 , 1 , 1 } , { 3 , 1 , 0 } , { 4 , 1 , 0 } , { 6 , 1 , 0 } , { 5 , 1 , 0 } , { 7 , 1 , 0 } , { 6 , 1 , 0 } , { 5 , 1 , 0 } , { 3 , 1 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 3 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 1 } , { 1 , 0 , 0 } , { 2 , 0 , 5 } , { 1 , 0 , 2 } , { 0 , 0 , 2 } , { 1 , 1 , 0 } , { 2 , 1 , 0 } , { 3 , 1 , 2 } , { 4 , 1 , 0 } , { 3 , 1 , 0 } , { 4 , 1 , 0 } , { 3 , 1 , 0 } , { 2 , 1 , 1 } , { 1 , 1 , 0 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , \
{ 0 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 1 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 1 } , { 1 , 0 , 1 } , { 0 , 0 , 1 } , { 2 , 1 , 1 } , { 4 , 1 , 0 } , { 6 , 1 , 0 } , { 7 , 1 , 1 } , { 8 , 1 , 0 } , { 7 , 1 , 0 } , { 5 , 1 , 0 } , { 3 , 1 , 0 } , { 2 , 1 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 1 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 2 } , { 2 , 0 , 0 } , { 3 , 0 , 2 } , { 1 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 4 } , { 1 , 0 , 1 } , { 0 , 0 , 1 } , { 1 , 1 , 0 } , { 2 , 1 , 0 } , { 3 , 1 , 0 } , { 4 , 1 , 0 } , { 5 , 1 , 0 } , { 4 , 1 , 1 } , { 5 , 1 , 0 } , { 4 , 1 , 0 } , { 2 , 1 , 1 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 3 } , { 3 , 0 , 1 } , { 2 , 0 , 0 } , \
{ 0 , 0 , 0 } , { 3 , 0 , 2 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 2 } , { 1 , 0 , 0 } , { 0 , 0 , 1 } , { 2 , 1 , 0 } , { 3 , 1 , 0 } , { 5 , 1 , 0 } , { 8 , 1 , 0 } , { 9 , 1 , 0 } , { 10 , 1 , 1 } , { 7 , 1 , 0 } , { 5 , 1 , 0 } , { 3 , 1 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 1 , 0 , 1 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 3 } , { 4 , 0 , 0 } , { 3 , 0 , 7 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 2 , 0 , 0 } , { 0 , 0 , 2 } , { 2 , 1 , 0 } , { 3 , 1 , 0 } , { 4 , 1 , 0 } , { 5 , 1 , 0 } , { 7 , 1 , 0 } , { 5 , 1 , 0 } , { 6 , 1 , 0 } , { 4 , 1 , 1 } , { 2 , 1 , 0 } , { 0 , 0 , 1 } , { 1 , 0 , 1 } , { 2 , 0 , 1 } , { 3 , 0 , 2 } , { 2 , 0 , 0 } , \
{ 0 , 0 , 0 } , { 3 , 0 , 5 } , { 2 , 0 , 1 } , { 1 , 0 , 0 } , { 0 , 0 , 0 } , { 1 , 1 , 0 } , { 2 , 1 , 0 } , { 5 , 1 , 0 } , { 8 , 1 , 0 } , { 12 , 1 , 0 } , { 14 , 1 , 0 } , { 13 , 1 , 0 } , { 9 , 1 , 0 } , { 6 , 1 , 0 } , { 3 , 1 , 0 } , { 1 , 1 , 0 } , { 0 , 0 , 0 } , { 2 , 0 , 0 } , { 1 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 4 , 0 , 0 } , { 3 , 0 , 1 } , { 4 , 0 , 0 } , { 3 , 0 , 0 } , { 4 , 0 , 1 } , { 3 , 0 , 0 } , { 4 , 0 , 0 } , { 3 , 0 , 2 } , { 4 , 0 , 0 } , { 3 , 0 , 1 } , { 4 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 2 } , { 0 , 0 , 1 } , { 1 , 1 , 0 } , { 2 , 1 , 0 } , { 4 , 1 , 0 } , { 5 , 1 , 0 } , { 7 , 1 , 0 } , { 8 , 1 , 0 } , { 6 , 1 , 1 } , { 5 , 1 , 0 } , { 3 , 1 , 0 } , { 1 , 1 , 1 } , { 1 , 0 , 1 } , { 2 , 0 , 0 } , { 3 , 0 , 0 } , { 2 , 0 , 0 } , { 3 , 0 , 1 } , { 2 , 0 , 0 } , \
@ -178,8 +168,8 @@ AP_Declination::get_lookup_value(uint8_t x, uint8_t y)
@@ -178,8 +168,8 @@ AP_Declination::get_lookup_value(uint8_t x, uint8_t y)
if ( x > = 7 ) x - = 7 ;
// If we are looking for the first value we can just use the
// row_ start value from declination_keys
if ( y = = 0 ) return declination_keys . row_start [ x ] ;
// row start value from declination_keys
if ( y = = 0 ) return declination_keys [ 0 ] [ x ] ;
// Init vars
row_value stval ;
@ -192,16 +182,16 @@ AP_Declination::get_lookup_value(uint8_t x, uint8_t y)
@@ -192,16 +182,16 @@ AP_Declination::get_lookup_value(uint8_t x, uint8_t y)
uint16_t start_index = 0 , i ;
// Init value to row start
val = declination_keys . row_start [ x ] ;
val = declination_keys [ 0 ] [ x ] ;
// Find the first element in the 1D array
// that corresponds with the target row
for ( i = 0 ; i < x ; i + + ) {
start_index + = declination_keys . row_length [ i ] ;
start_index + = declination_keys [ 1 ] [ i ] ;
}
// Traverse the row until we find our value
for ( i = start_index ; i < ( start_index + declination_keys . row_length [ x ] ) & & current_virtual_index < = y ; i + + ) {
for ( i = start_index ; i < ( start_index + declination_keys [ 1 ] [ x ] ) & & current_virtual_index < = y ; i + + ) {
// Pull out the row_value struct
memcpy_P ( ( void * ) & stval , ( void * ) & declination_values [ i ] , sizeof ( struct row_value ) ) ;