Show
Ignore:
Timestamp:
01/23/07 13:27:28 (6 years ago)
Author:
balister
Message:

Add variable length buffers to realChar interface.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • standardInterfaces/trunk/standardInterfaces/realChar_p.cpp

    r1991 r2607  
    2525#include <standardinterfaces/realChar_p.h> 
    2626 
    27 standardInterfaces_i::realChar_p::realChar_p(const char* _name) : portName(_name) 
     27standardInterfaces_i::realChar_p::realChar_p(const char* _name, unsigned int bufLen) : portName(_name), bufferLength(bufLen), rdPtr(0), wrPtr(0) 
    2828{ 
    2929 
     
    3131    data_servant_var = data_servant->_this(); 
    3232 
    33     ready_for_input = new omni_semaphore(1); 
     33    PortTypes::CharSequence a; 
     34    I_buf.assign(bufferLength, a); 
     35 
     36    ready_for_input = new omni_semaphore(bufferLength); 
    3437    data_ready = new omni_semaphore(0); 
    3538} 
     
    5255    data_ready->wait(); 
    5356 
    54     I = &I_in; 
     57    I = &I_buf[rdPtr]; 
     58    rdPtr = ++rdPtr % bufferLength; 
    5559} 
    5660 
     
    6973    base->ready_for_input->wait(); 
    7074 
    71     base->I_in = I; 
     75    base->I_buf[base->wrPtr] = I; 
     76    base->wrPtr= ++base->wrPtr % base->bufferLength; 
    7277 
    7378    base->data_ready->post();