00001 #ifndef __J2K__QNX__Writer_CPP__
00002 #define __J2K__QNX__Writer_CPP__
00003
00004 #include <j2k/Fred/QNX/Writer.hpp>
00005 #include <j2k/Fred/QNX/Extern.hpp>
00006
00007 Writer::Writer()
00008 {
00009
00010 kb_fd = open( LOCAL_KEYBOARD, O_RDWR );
00011 mdm_fd = open( ELAN104_SERIAL, O_RDWR );
00012
00013 kb_proxy = qnx_proxy_attach( 0, 0, 0, -1 );
00014 mdm_proxy = qnx_proxy_attach( 0, 0, 0, -1 );
00015
00016 dev_mode( kb_fd, 0, _DEV_MODES );
00017 dev_mode( mdm_fd, 0, _DEV_MODES );
00018
00019
00020
00021 dev_state( kb_fd, 0, _DEV_EVENT_INPUT );
00022 dev_arm( kb_fd, kb_proxy, _DEV_EVENT_INPUT );
00023
00024 dev_state( mdm_fd, 0, _DEV_EVENT_INPUT );
00025 dev_arm( mdm_fd, mdm_proxy, _DEV_EVENT_INPUT );
00026 }
00027
00028 void Writer::Run()
00029 {
00030 int temp = 0;
00031 for(;;) {
00032
00033 printf("Writer Receive(...)\n\r");
00034 rpid = Receive( 0, 0, 0 );
00035 printf("Writer Received it! [%d]\n\r", rpid );
00036
00037
00038
00039 printf( "Writer2!\n\r" );
00040
00041 if ( rpid == kb_proxy ) {
00042 printf("Keyboard\n\r");
00043 state = dev_state( kb_fd, 0, _DEV_EVENT_INPUT );
00044
00045
00046
00047
00048 if ( state & _DEV_EVENT_INPUT ) {
00049 n = read( kb_fd, &buf, sizeof( buf ) );
00050
00051 b1->Write( (int)( buf[0] ) );
00052 dev_arm( kb_fd, kb_proxy, _DEV_EVENT_INPUT );
00053 }
00054
00055 } else if ( rpid == r1->Pid() ) {
00056
00057 printf("Writer Reply back\n\r");
00058 msg.type = MSG_NONE;
00059 Reply( pid, &msg, sizeof( msg ) );
00060 }
00061
00062 printf("End of Writer [%d]\n\r", rpid );
00063
00064 }
00065
00066 printf("Writer Thread finished!\n\r");
00067 }
00068
00069 void Writer::Track( int TrackID, int dir )
00070 {
00071 int value = 0;
00072
00073 if ( TrackID < 1 || TrackID > 4 ) { return; }
00074
00075 TrackID--;
00076 value = ( TrackID << 1 );
00077 if ( dir ) { value++; }
00078
00079 value = ( 1 << value );
00080 b1->Write( 0, value );
00081 }
00082
00083 #endif