void FileSystemDevice::FileState::complete_write(PacketHeader *packet_)
 {
  Packet<uint8,Sys::AsyncFile::WriteExt,WriteExt> packet=packet_;

  auto ext=packet.getExt();
  auto ext2=packet.getDeepExt<1>();

  if( ext->isOk() )
    {
     ext2->setFileLen(ext->file_len);
    }
  else
    {
     ext2->setError(MakeError(ext,FileError_WriteFault));
    }

  packet.popExt().complete();
 }
예제 #2
0
void AsyncFileDevice::FileState::open(Packet<uint8,Sys::AsyncFile::OpenExt> packet,StrLen file_name,FileOpenFlags oflags)
 {
  auto ext=packet.getExt();
  
  auto result=file.open(file_name,oflags);
   
  if( result.error )
    {
     ext->setError(result.error);
    }
  else
    {
     is_opened=true;

     ext->setFileLen(result.file_len);
    }
  
  packet.complete();
 }
예제 #3
0
void AsyncFileDevice::FileState::write(Packet<uint8,Sys::AsyncFile::WriteExt> packet,FilePosType off)
 {
  auto ext=packet.getExt();
  
  ulen len=packet.getDataLen();
  
  auto result=file.setWrite(off,len);
  
  if( result.error )
    {
     ext->setError(result.error);
     
     packet.complete();
    }
  else
    {
     ext->setFileLen(result.file_len);
     
     engine.write(&file,packet,off);
    }
 }
예제 #4
0
int VUMeter::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QWidget::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: overThreshold(); break;
        case 1: underThreshold(); break;
        case 2: dtmfCode((*reinterpret_cast< char*(*)>(_a[1]))); break;
        case 3: setVU((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 4: setLen((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 5: setFileLen((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 6: showRecord(); break;
        case 7: hideRecord(); break;
        case 8: showPlayback(); break;
        case 9: updateThresholdTimer(); break;
        }
        _id -= 10;
    }
    return _id;
}