
// 2 bits for the leftLegs factor
// 2 bits for the rightLegs factor
// 2 bits for the middleLegs factor
// total of 6 bits in the state address

typedef struct FSM_State_s { 
  unsigned leftLegs : 2;
  unsigned rightLegs : 2;
  unsigned middleLegs : 2;
} FSM_State_t;
 
typedef unsigned int  PTRType; 
    
typedef struct stateEntry_s {  
    PTRType       next;            
    FSM_State_t   state;           
 } stateEntry_t;                   
 
//----------| leftLegs |----------
  #define forward  0
  #define center   1
  #define back     2
//----------| rightLegs |----------
//  #define forward  0
//  #define center   1
//  #define back     2
//----------| middleLegs |----------
  #define left    0
//  #define center  1
  #define right   2
//------------
  //    leftLegs  ,  rightLegs  ,  middleLegs  ,
stateEntry_t stateTable[] = {   
 { 9, {  forward   , forward   , left   }}  ,      /*   index: 0   */
 { 0, {  center    , forward   , left   }}  ,      /*   index: 1   */
 { 0, {  back      , forward   , left   }}  ,      /*   index: 2   */
 { 21,{  forward   , center    , left   }}  ,      /*   index: 3   */
 { 13,{  center    , center    , left   }}  ,      /*   index: 4   */
 { 3, {  back      , center    , left   }} ,       /*   index: 5   */
 { 24,{  forward   , back      , left   }}  ,      /*   index: 6   */
 { 6, {  center    , back      , left   }} ,       /*   index: 7   */
 { 17,{  back      , back      , left   }}  ,      /*   index: 8   */
 { 17,{  forward   , forward   , center }}  ,      /*   index: 9   */
 { 1, {  center    , forward   , center }} ,       /*   index: 10   */
 { 2, {  back      , forward   , center }} ,       /*   index: 11   */
 { 21,{  forward   , center    , center }}  ,      /*   index: 12   */
 { 17,{  center    , center    , center }}  ,      /*   index: 13   */
 { 23,{  back      , center    , center }}  ,      /*   index: 14   */
 { 24,{  forward   , back      , center }}  ,      /*   index: 15   */
 { 7, {  center    , back      , center }} ,       /*   index: 16   */
 { 26,{  back      , back      , center }}  ,      /*   index: 17   */
 { 9, {  forward   , forward   , right  }} ,       /*   index: 18   */
 { 1, {  center    , forward   , right  }} ,       /*   index: 19   */
 { 2, {  back      , forward   , right  }} ,       /*   index: 20   */
 { 18,{  forward   , center    , right  }}  ,      /*   index: 21   */
 { 13,{  center    , center    , right  }}  ,      /*   index: 22   */
 { 20,{  back      , center    , right  }}  ,      /*   index: 23   */
 { 18,{  forward   , back      , right  }}  ,      /*   index: 24   */
 { 19,{  center    , back      , right  }}  ,      /*   index: 25   */
 { 20,{  back      , back      , right  }}         /*   index: 26   */
};
