Main Page   Packages   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

C:/temp/src/j2k/QNX4/Test/Writer.cpp

Go to the documentation of this file.
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   // Initialize and setup the Serial Port
00010   kb_fd  = open( LOCAL_KEYBOARD, O_RDWR );  // Local Keyboard
00011   mdm_fd = open( ELAN104_SERIAL, O_RDWR );  // QNX-2 Elan104 Board
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   // Clear, then arm the proxies for future events
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     // Wait for either keyboard or modem to send an input.
00033     printf("Writer Receive(...)\n\r");
00034     rpid = Receive( 0, 0, 0 );
00035     printf("Writer Received it! [%d]\n\r", rpid );
00036 
00037     // Waiting for an event, then check the Process ID,
00038     // Read the message and send it back to the other machine.
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       // If there is an Input from Keyboard Console
00046       // then Read it and Send it Back to the Modem
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

Generated on Sun Oct 14 18:46:42 2001 for Standard J2K Library by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001