00001 #include <j2k/Fred/Basic.hpp>
00002 #include <j2k/Fred/QNX/System.hpp>
00003 #include <j2k/Fred/QNX/TimerThread.hpp>
00004 #include <j2k/Fred/QNX/Board.hpp>
00005 #include <j2k/Fred/QNX/Board.cpp>
00006
00007 class FredBoard : public TimerThread
00008 {
00009 private:
00010 Board* b1;
00011 int count_;
00012 int prev;
00013 int data;
00014
00015 public:
00016 FredBoard() : TimerThread()
00017 {
00018 b1 = new Board();
00019 count_ = 0;
00020 prev = 0;
00021 }
00022
00023 virtual ~FredBoard()
00024 {
00025 if ( b1 != NULL ) delete b1;
00026 }
00027
00028 void tick()
00029 {
00030 ++count_;
00031 ++prev;
00032
00033 printf("Tick #%d\n\r",count_);
00034
00035 printf("Prev=[%d]\t", prev);
00036
00037 if ( prev == 1 ) {
00038 b1->Write( 0, 255 - 1 );
00039 b1->Write( 1, 255 - 1 );
00040 printf("1 = [%d]", 255-1);
00041
00042 } else if ( prev == 4 ) {
00043 b1->Write( 0, 255 - 2 );
00044 b1->Write( 1, 255 - 2 );
00045 printf("2 = [%d]", 255-2);
00046
00047 } else if ( prev == 7 ) {
00048 b1->Write( 0, 255 - 4 );
00049 b1->Write( 1, 255 - 4 );
00050 printf("4 = [%d]", 255-4);
00051
00052 } else if ( prev == 10 ) {
00053 b1->Write( 0, 255 - 8 );
00054 b1->Write( 1, 255 - 8 );
00055 printf("8 = [%d]", 255-8);
00056
00057 } else if ( prev == 13 ) {
00058 b1->Write( 0, 255 - 16 );
00059 b1->Write( 1, 255 - 16 );
00060 printf("16 = [%d]", 255-16);
00061
00062 } else if ( prev == 16 ) {
00063 b1->Write( 0, 255 - 32 );
00064 b1->Write( 1, 255 - 32 );
00065 printf("32 = [%d]", 255-32);
00066
00067 } else if ( prev == 19 ) {
00068 b1->Write( 0, 255 - 64 );
00069 b1->Write( 1, 255 - 64 );
00070 printf("64 = [%d]", 255-64);
00071
00072 } else if ( prev == 22 ) {
00073 b1->Write( 0, 255 - 128 );
00074 b1->Write( 1, 255 - 128 );
00075 printf("128 = [%d]", 255-128);
00076
00077 } else {
00078 b1->Write( 0, 255 );
00079 b1->Write( 1, 255 );
00080 }
00081
00082 if ( prev > 26 ) { prev = 0; }
00083
00084 data = b1->Read();
00085
00086 printf("\n\r 111111 ");
00087 printf("\n\r 54321098 76543210");
00088 printf("\n\rData: ");
00089
00090 if ( ( data & 32768 ) == 32768 ) { printf("1"); } else { printf("0"); }
00091 if ( ( data & 16384 ) == 16384 ) { printf("1"); } else { printf("0"); }
00092 if ( ( data & 8192 ) == 8192 ) { printf("1"); } else { printf("0"); }
00093 if ( ( data & 4096 ) == 4096 ) { printf("1"); } else { printf("0"); }
00094 if ( ( data & 2048 ) == 2048 ) { printf("1"); } else { printf("0"); }
00095 if ( ( data & 1024 ) == 1024 ) { printf("1"); } else { printf("0"); }
00096 if ( ( data & 512 ) == 512 ) { printf("1"); } else { printf("0"); }
00097 if ( ( data & 256 ) == 256 ) { printf("1 "); } else { printf("0 "); }
00098 if ( ( data & 128 ) == 128 ) { printf("1"); } else { printf("0"); }
00099 if ( ( data & 64 ) == 64 ) { printf("1"); } else { printf("0"); }
00100 if ( ( data & 32 ) == 32 ) { printf("1"); } else { printf("0"); }
00101 if ( ( data & 16 ) == 16 ) { printf("1"); } else { printf("0"); }
00102 if ( ( data & 8 ) == 8 ) { printf("1"); } else { printf("0"); }
00103 if ( ( data & 4 ) == 4 ) { printf("1"); } else { printf("0"); }
00104 if ( ( data & 2 ) == 2 ) { printf("1"); } else { printf("0"); }
00105 if ( ( data & 1 ) == 1 ) { printf("1"); } else { printf("0"); }
00106
00107 printf("\n\r");
00108
00109 printf("Read -->%d \n\r", data );
00110 }
00111
00112 void tick2()
00113 {
00114 ++count_;
00115 ++prev;
00116
00117 printf("Tick #%d\n\r",count_);
00118 printf("Prev=[%d]\t", prev);
00119
00120 if ( prev == 1 ) {
00121 b1->Switch( SWITCH_1, TRACK_INSIDE );
00122 } else if ( prev == 4 ) {
00123 b1->Switch( SWITCH_1, TRACK_OUTSIDE );
00124 } else if ( prev == 7 ) {
00125 b1->Switch( SWITCH_2, TRACK_INSIDE );
00126 } else if ( prev == 10 ) {
00127 b1->Switch( SWITCH_2, TRACK_OUTSIDE );
00128 } else if ( prev == 13 ) {
00129 b1->Switch( SWITCH_3, TRACK_INSIDE );
00130 } else if ( prev == 16 ) {
00131 b1->Switch( SWITCH_3, TRACK_OUTSIDE );
00132 } else if ( prev == 19 ) {
00133 b1->Switch( SWITCH_4, TRACK_INSIDE );
00134 } else if ( prev == 22 ) {
00135 b1->Switch( SWITCH_4, TRACK_OUTSIDE );
00136 } else {
00137 b1->SwitchNormal();
00138 }
00139
00140 if ( prev > 26 ) { prev = 0; }
00141
00142 data = b1->Read();
00143
00144 printf("\n\r 111111 ");
00145 printf("\n\r 54321098 76543210");
00146 printf("\n\rData: ");
00147
00148 if ( ( data & 32768 ) == 32768 ) { printf("1"); } else { printf("0"); }
00149 if ( ( data & 16384 ) == 16384 ) { printf("1"); } else { printf("0"); }
00150 if ( ( data & 8192 ) == 8192 ) { printf("1"); } else { printf("0"); }
00151 if ( ( data & 4096 ) == 4096 ) { printf("1"); } else { printf("0"); }
00152 if ( ( data & 2048 ) == 2048 ) { printf("1"); } else { printf("0"); }
00153 if ( ( data & 1024 ) == 1024 ) { printf("1"); } else { printf("0"); }
00154 if ( ( data & 512 ) == 512 ) { printf("1"); } else { printf("0"); }
00155 if ( ( data & 256 ) == 256 ) { printf("1 "); } else { printf("0 "); }
00156 if ( ( data & 128 ) == 128 ) { printf("1"); } else { printf("0"); }
00157 if ( ( data & 64 ) == 64 ) { printf("1"); } else { printf("0"); }
00158 if ( ( data & 32 ) == 32 ) { printf("1"); } else { printf("0"); }
00159 if ( ( data & 16 ) == 16 ) { printf("1"); } else { printf("0"); }
00160 if ( ( data & 8 ) == 8 ) { printf("1"); } else { printf("0"); }
00161 if ( ( data & 4 ) == 4 ) { printf("1"); } else { printf("0"); }
00162 if ( ( data & 2 ) == 2 ) { printf("1"); } else { printf("0"); }
00163 if ( ( data & 1 ) == 1 ) { printf("1"); } else { printf("0"); }
00164
00165 printf("\n\r");
00166 printf("Read -->%d \n\r", data );
00167 }
00168 };
00169
00170 void main() {
00171 FredBoard the_board;
00172
00173 struct timespec ts = { 0, 950000000l };
00174
00175
00176 the_board.start(ts);
00177
00178 while( !kbhit() ) { }
00179
00180 the_board.stop();
00181 }