コード例 #1
0
/* Upgrade bookmarks from the old system to the current bookmark system */
void UpgradeBookmarks( void )
{
    MemHandle   handle;
    UInt8*      startBookmarkPtr;
    OldBookmarkData* startDataPtr;
    UInt8*      bookmarkPtr;
    UInt16      entries;
    Boolean     success;
    OldBookmarkData* dataPtr;
    UInt16      i;
    Boolean*    done;

    handle = ReturnMetaHandle( INTERNAL_BOOKMARKS_ID, NO_PARAGRAPHS );

    if ( handle == NULL )
        return;

    bookmarkPtr     = MemHandleLock( handle );
    dataPtr         = ( OldBookmarkData* )( bookmarkPtr + GET_OFFSET( bookmarkPtr ) );
    entries         = GET_ENTRIES( bookmarkPtr );
    bookmarkPtr    += BOOKMARK_HEADER_LEN;

    startDataPtr     = dataPtr;
    startBookmarkPtr = bookmarkPtr;

    if ( 0 == entries ) {
        MemHandleUnlock( handle );
        CloseRecord( handle, true );
        DeleteMetaRecord( INTERNAL_BOOKMARKS_ID );
        return;
    }

    success = false;

    done = SafeMemPtrNew( sizeof( Boolean ) * entries );
    MemSet( done, sizeof( Boolean ) * entries, 0 );

    success = true;

    for ( i = 0 ; i < entries ; i++ ) {
        if ( ! done[ i ] )
            success = ConvertBookmarksForRecord( dataPtr->recordId,
                startBookmarkPtr, startDataPtr, entries, done ) &&
                success;

        bookmarkPtr    += StrLen( bookmarkPtr ) + 1;
        dataPtr++;
    }

    SafeMemPtrFree( done );

    MemHandleUnlock( handle );
    CloseRecord( handle, true );

    DeleteMetaRecord( INTERNAL_BOOKMARKS_ID );
}
コード例 #2
0
ファイル: doclist.c プロジェクト: TimofonicJunkRoom/plucker-1
/* Add Plucker document */
void AddDocument
    (
    DocumentInfo*   docInfo,
    Char*           volumeLabel
    )
    /* THROWS */
{
    MemHandle   handle;
    UInt8*      dataPtr;
    UInt16      infoSize;
    UInt16      dataSize;
    UInt16      dbIndex;

    infoSize = sizeof *docInfo - 2 * sizeof( UInt16) - sizeof( Char* );
    if ( docInfo->location == RAM )
        dataSize = 0;
    else
        dataSize = StrLen( docInfo->filename ) + StrLen( volumeLabel ) + 2;

    dbIndex = dmMaxRecordIndex;
    handle  = NewRecord( plkrDocList, &dbIndex, infoSize + dataSize );
    THROW_IF( handle == NULL, DmGetLastErr() );
    dataPtr = MemHandleLock( handle );
    DmWrite( dataPtr, 0, docInfo, infoSize );
    if ( docInfo->location != RAM ) {
        DmWrite( dataPtr, infoSize, docInfo->filename,
            StrLen( docInfo->filename ) + 1 );
        DmWrite( dataPtr, infoSize + StrLen( docInfo->filename ) + 1,
            volumeLabel, StrLen( volumeLabel ) + 1 );
    }
    MemHandleUnlock( handle );
    CloseRecord( handle, true );
}
コード例 #3
0
ファイル: records.c プロジェクト: feilongfl/tm4c1294ncpdt
bool    AddModRecord(event  ev)
{
  if (IsRecordDisabled(ev)) return true;

  uint i = OpenRecord(MOD_RECORD, cdwModRecord);

  reCurr.ti = *GetCurrTimeDate();
  reCurr.cdwRecord = cdwModRecord++; SaveCache(&chModRecord);
  reCurr.ev = ev;

  PutChar(0, ibDig);

  switch (ev)
  {
    case EVE_MODEM_PROFILEOPEN:
    case EVE_MODEM_SPECIALOPEN:  Put(1, (uchar *) &mpdiDigital[ibDig], sizeof(digital)); break;

    case EVE_MODEM_PROFILE:      PutInt(1, mpcwStopCan[ibDig]); break;

    case EVE_MODEM_PROFILEOK:    PutInt(1, cwHouRead);
                                 PutInt(3, mpcwStopCan[ibDig]); break;

    case EVE_MODEM_PROFILEERROR2:PutInt(1, GetCurr());
                                 PutChar(3, mpSerial[ibPort]); break;
  }

  CloseRecord(MOD_RECORD, i);

  return CloseOut();
}
コード例 #4
0
ファイル: records.c プロジェクト: feilongfl/tm4c1294ncpdt
bool    AddImpRecord(event  ev)
{
  if (IsRecordDisabled(ev)) return true;

  uint i = OpenRecord(IMP_RECORD, cdwImpRecord);

  reCurr.ti = *GetCurrTimeDate();
  reCurr.cdwRecord = cdwImpRecord++; SaveCache(&chImpRecord);
  reCurr.ev = ev;

  PutChar(0, ibDig);

  switch (ev)
  {
    case EVE_EVENTS_BADLINK:  PutChar(1, mpSerial[ibPort]);
                              PutChar(2, bEventCode);
                              break;

    case EVE_EVENTS_OMISSION: PutChar(1, bEventCode);
                              break;

    case EVE_EVENTS_A:
    case EVE_EVENTS_B:        Put(1, (uchar *) &tiRecordTime, sizeof(time));
                              PutChar(7, bEventCode);
                              break;
  }

  CloseRecord(IMP_RECORD, i);

  return CloseOut();
}
コード例 #5
0
ファイル: records.c プロジェクト: feilongfl/tm4c1294ncpdt
bool    AddSysRecord(event  ev)
{
  if (IsRecordDisabled(ev)) return true;

  uint i = OpenRecord(SYS_RECORD, cdwSysRecord);

  reCurr.ti = *GetCurrTimeDate();
  reCurr.cdwRecord = cdwSysRecord++; SaveCache(&chSysRecord);
  reCurr.ev = ev;

  switch (ev)
  {
//    case EVE_CONTACTS3_START:
//    case EVE_CONTACTS3_COUNTER: memcpy(&reCurr.mpbBuff+0, &cbContact, sizeof(uchar));
//                                memcpy(&reCurr.mpbBuff+1, &cbContactMax, sizeof(uchar)); break;
//
//    case EVE_VALUE3_DOWN:     memcpy(&reCurr.mpbBuff+0, &reContactDown, sizeof(float)); break;
//    case EVE_VALUE3_UP:       memcpy(&reCurr.mpbBuff+0, &reContactUp, sizeof(float)); break;
//    case EVE_VALUE3_COUNTER:  memcpy(&reCurr.mpbBuff+0, &cbContactMax, sizeof(uchar)); break;
//
//    case EVE_CONTACTS3_0_ON:  memcpy(&reCurr.mpbBuff+0, &reContactRec, sizeof(float));
//                              memcpy(&reCurr.mpbBuff+4, &reContactUp, sizeof(float)); break;
//
//    case EVE_CONTACTS3_0_OFF: memcpy(&reCurr.mpbBuff+0, &reContactRec, sizeof(float));
//                              memcpy(&reCurr.mpbBuff+4, &reContactDown, sizeof(float)); break;
//
//    case EVE_CONTACTSMODE:
//    case EVE_CONTACTS1:
//    case EVE_CONTACTS2: memcpy(&reCurr.mpbBuff+0, &bContactRec, sizeof(uchar)); break;

    case EVE_PREVNEXTTIME2:   Put(0, (uchar *) &tiCurr, sizeof(time)); break;

    case EVE_EDIT_DIGITAL1:
    case EVE_EDIT_DIGITAL2:   PutChar(0, ibRecordCan);
                              Put(1, (uchar *) &mpdiDigital[ibRecordCan], sizeof(digital)); break;

    case EVE_EDIT_KEY10:
    case EVE_EDIT_KEY20:      PutChar(0, ibRecordCan);
                              Put(1, (uchar *) &mpphKeys[ibRecordCan].szLine+0, 7); break;

    case EVE_EDIT_KEY11:
    case EVE_EDIT_KEY21:      Put(0, (uchar *) &mpphKeys[ibRecordCan].szLine+7, 6); break;

    case EVE_EDIT_ADDRESS10:
    case EVE_EDIT_ADDRESS11:  PutChar(0, ibRecordCan);
                              Put(1, (uchar *) &mpdwAddress1[ibRecordCan], sizeof(ulong)); break;

    case EVE_EDIT_ADDRESS20:
    case EVE_EDIT_ADDRESS21:  PutChar(0, ibRecordCan);
                              Put(1, (uchar *) &mpdwAddress2[ibRecordCan], sizeof(ulong)); break;
  }

  CloseRecord(SYS_RECORD, i);

  return CloseOut();
}
コード例 #6
0
ファイル: doclist.c プロジェクト: TimofonicJunkRoom/plucker-1
/* Return info for last openned document */
DocumentInfo* GetLastDocInfo( void )
{
    DocumentInfo* docInfo;

    docInfo = NULL;

    if ( plkrDocList == NULL ) {
        plkrDocList = DmOpenDatabaseByTypeCreator( PlkrDocListType, ViewerAppID,
                        dmModeReadWrite );
    }
    if ( plkrDocList != NULL ) {
        DocumentData*   recordPtr;
        MemHandle       handle;

        ErrTry {
            /* assign doc info values for document */
            handle = FindDocData( Prefs()->docName, ALL_ELEMENTS, NULL );
            if ( handle != NULL ) {
                recordPtr = MemHandleLock( handle );

                StrNCopy( lastDocInfo.name, recordPtr->name, dmDBNameLength );
                lastDocInfo.cardNo      = recordPtr->cardNo;
                lastDocInfo.created     = recordPtr->created;
                lastDocInfo.attributes  = recordPtr->attributes;
                lastDocInfo.size        = recordPtr->size;
                lastDocInfo.categories  = recordPtr->categories;
                lastDocInfo.location    = recordPtr->location;
                lastDocInfo.timestamp   = recordPtr->timestamp;
                if ( lastDocInfo.location != RAM ) {
                    UInt16 fileLength;

                    ReleaseLastDocInfo();

                    fileLength              = StrLen( recordPtr->data ) + 1;
                    lastDocInfo.filename    = SafeMemPtrNew( fileLength );
                    StrNCopy( lastDocInfo.filename, recordPtr->data,
                        fileLength );
                    lastDocInfo.volumeRef   = FindVolRefNum( recordPtr->data +
                                                             fileLength );
                }
                MemHandleUnlock( handle );
                CloseRecord( handle, false );

                CloseDocList();

                docInfo = &lastDocInfo;
            }
        }
        ErrCatch( UNUSED_PARAM( err ) ) {
        } ErrEndCatch

        CloseDocList();
    }
コード例 #7
0
ファイル: doclist.c プロジェクト: TimofonicJunkRoom/plucker-1
/* Rename document name in document list */
void UpdateDocumentName
    (
    UInt16      index,  /* record index */
    const Char* name,   /* new document name */
    const Char* filename  /* new filename */
    )
    /* THROWS */
{
    MemHandle       handle;
    DocumentData*   handlePtr;

    THROW_IF( name == NULL || *name == '\0', errNoDocumentName );

    handle = OpenRecord( plkrDocList, index );
    THROW_IF( handle == NULL, DmGetLastErr() );

    handlePtr = MemHandleLock( handle );
    DmWrite( handlePtr, OFFSETOF( DocumentData, name ),
        name, StrLen( name ) + 1 );
    if ( handlePtr->location != RAM ) {
        DocumentData*   dataPtr;
        UInt16          infoSize;
        UInt16          dataSize;
        Char            volumeLabel[ LABEL_LEN ];
        UInt16          fileLength;
        UInt16          volumeLabelLength;

        fileLength          = StrLen( handlePtr->data ) + 1;
        volumeLabelLength   = StrLen( handlePtr->data + fileLength ) + 1;
        StrNCopy( volumeLabel, handlePtr->data + fileLength,
            volumeLabelLength );

        MemHandleUnlock( handle );

        infoSize = sizeof *dataPtr;
        dataSize = StrLen( filename ) + StrLen( volumeLabel ) + 2;

        handle  = ResizeRecord( plkrDocList, index, infoSize + dataSize );
        dataPtr = MemHandleLock( handle );
        DmWrite( dataPtr, infoSize, filename, StrLen( filename ) + 1 );
        DmWrite( dataPtr, infoSize + StrLen( filename ) + 1, volumeLabel,
            StrLen( volumeLabel ) + 1 );
    }
    MemHandleUnlock( handle );
    CloseRecord( handle, true );
    DmInsertionSort( plkrDocList, CompareDocumentNames, 0 );
}
コード例 #8
0
ファイル: history.c プロジェクト: TimofonicJunkRoom/plucker-1
/* Restore data for current record from history */
static void RestoreData( void )
{
    MetaRecord* meta;
    MemHandle   handle;
    UInt16      recordId;

    recordId    = history.records[ history.currentRecord ].recordId;
    handle      = GetMetaHandle( recordId, false );
    meta        = MemHandleLock( handle );

    DmWrite( meta, OFFSETOF( MetaRecord, verticalOffset ),
        &history.records[ history.currentRecord ],
        sizeof( HistoryData ) - sizeof( Int16 ) );

    MemHandleUnlock( handle );
    CloseRecord( handle, true );
}
コード例 #9
0
ファイル: AudioCapture.cpp プロジェクト: tempbottle/TestSet
//终止录音
BOOL CWaveIn::StopRec()
{
    //停止录音
    CloseRecord();
    //休眠1500毫秒
    Sleep(800);
    //释放缓存
    FreeBuffer();
    //关闭录音设备
    if (CloseDev())
    {
        //停止线程
        StopThread();
    }
    //返回
    return TRUE;
}
コード例 #10
0
ファイル: doclist.c プロジェクト: TimofonicJunkRoom/plucker-1
/* Deactivate Plucker document */
static void DeactivateOneDocument
    (
    UInt16 index
    )
{
    MemHandle   handle;
    Boolean     active;

    active = false;
    handle = OpenRecord( plkrDocList, index );
    if ( handle != NULL ) {
        DocumentData* handlePtr;

        handlePtr = MemHandleLock( handle );
        if ( Prefs()->syncPolicy != SYNC_IGNORE_CARD ||
             handlePtr->location == RAM )
            DmWrite( handlePtr, OFFSETOF( DocumentData, active ), &active,
                sizeof( Boolean ) );
        MemHandleUnlock( handle );
        CloseRecord( handle, true );
    }
}
コード例 #11
0
ファイル: records.c プロジェクト: feilongfl/tm4c1294ncpdt
bool    AddKeyRecord(event  ev)
{
  if (IsRecordDisabled(ev)) return true;

  uint i = OpenRecord(KEY_RECORD, cdwKeyRecord);

  reCurr.ti = *GetCurrTimeDate();
  reCurr.cdwRecord = cdwKeyRecord++; SaveCache(&chKeyRecord);
  reCurr.ev = ev;

  switch (ev)
  {
    case EVE_GPS_GOODLINK:  Put(0, (uchar *) &tiGps, sizeof(time)); break;

    case EVE_GPS_BADGPS:    PutChar(0, bStatusGps); break;

    case EVE_GPS_GOODGPS_1: Put(0, (uchar *) &tiRecordTime, sizeof(time));
                            PutChar(6, bGmtGps); break;

    case EVE_GPS_GOODGPS_2: PutChar(0, bSeasonCurr);
                            PutChar(1, boSeasonGps ? 0xFF : 0x00); break;

    case EVE_EXT_CORRECT2:
    case EVE_ESC_K:
    case EVE_ESC_k:
    case EVE_INQ_CORRECT1:
    case EVE_INQ_CORRECT2:
    case EVE_INQ_CORRECT4:
    case EVE_PROGRAM_2:     Put(0, (uchar *) &tiRecordTime, sizeof(time)); break;

//    case EVE_SMK_GOODLINK:  memcpy(&reCurr.mpbBuff+0, &tiSMK, sizeof(time)); break;
//    case EVE_SMK_GOODSMK_1: memcpy(&reCurr.mpbBuff+0, &tiAlt, sizeof(time)); break;
  }

  CloseRecord(KEY_RECORD, i);

  return CloseOut();
}
コード例 #12
0
ファイル: doclist.c プロジェクト: TimofonicJunkRoom/plucker-1
/* Store when the document is read */
void StoreReadTimeInDocumentList
    (
    Char*  name,     /* name of document that should be updated */
    UInt32 newValue  /* time from epoch */
    )
{
    MemHandle handle;

    ErrTry {
        handle = FindDocData( name, ALL_ELEMENTS, NULL );
        if ( handle != NULL ) {
            DocumentInfo* recordPtr;

            recordPtr = MemHandleLock( handle );
            DmWrite( recordPtr, OFFSETOF( DocumentData, timestamp ),
                &newValue, sizeof( UInt32 ) );

            MemHandleUnlock( handle );
            CloseRecord( handle, true );
        }
    }
    ErrCatch( UNUSED_PARAM( err ) ) {
    } ErrEndCatch
}
コード例 #13
0
ファイル: records.c プロジェクト: feilongfl/tm4c1294ncpdt
bool    AddDigRecord(event  ev)
{
  if (IsRecordDisabled(ev)) return true;

  uint i = OpenRecord2(AUX_RECORD, cdwAuxRecord);

  reCurr.ti = *GetCurrTimeDate();
  reCurr.cdwRecord = cdwAuxRecord++; SaveCache(&chAuxRecord);
  reCurr.ev = ev;

  PutChar(0, ibDig);

  switch (ev)
  {
    case EVE_PROFILEOPEN:
    case EVE_SPECIALOPEN:   Put(1, (uchar *)&mpdiDigital[ibDig], sizeof(digital)); break;

//    case EVE_PROFILE:       memcpy(&reCurr.mpbBuff+1, &mpcwStopCan[ibDig], sizeof(uint)); break;

    case EVE_PROFILE2:      PutInt(0, mpcwStopCan[ibDig]);
                            PutInt(2, mpcwStopAuxCan[ibDig]); break;

//    case EVE_PROFILE_OK:    memcpy(&reCurr.mpbBuff+1, &cwHouRead, sizeof(uint));
//                            memcpy(&reCurr.mpbBuff+3, &mpcwStopCan[ibDig], sizeof(uint)); break;

    case EVE_PROFILE_OK2:   PutInt(0, cwHouRead);
                            PutInt(2, mpcwStopCan[ibDig]);
                            PutInt(4, mpcwStopAuxCan[ibDig]); break;

    case EVE_PROFILE_ERROR2:PutInt(1, GetCurr());
                            PutInt(3, mpSerial[ibPort]); break;

    case EVE_PROFILECLOSE2: PutInt(1, cwHouLength); break;

    case EVE_REFILL1:       PutInt(1, iwHardHou);
                            PutInt(3, iwBmin);
                            PutInt(5, iwBmax); break;

    case EVE_PREVIOUS_TOP:  PutInt(0, iwMajor); break;

    case EVE_CURRENT2_CANALS: Put(0, (uchar *)&mpbCurrent2Buff, 8); break;

    case EVE_CURRENT2_VALUE:  PutLong(1, dwRecord);
                              PutInt(5, wRecord); break;

//    case EVE_CHECKUP_START: memcpy(&reCurr.mpbBuff+0, &boCheckupReadonly, sizeof(uchar));
//                            memcpy(&reCurr.mpbBuff+1, &mpbCheckupLimitD[ibDig], sizeof(uchar));
//                            memcpy(&reCurr.mpbBuff+2, &mpbCheckupLimitM[ibDig], sizeof(uchar)); break;
//
//    case EVE_CHECKUP_NEXT:  memcpy(&reCurr.mpbBuff+0, &cwHouRead, sizeof(uint)); break;
//
//    case EVE_CHECKUP_VALUE: memcpy(&reCurr.mpbBuff+0, &dwBuffC, sizeof(ulong));
//                            memcpy(&reCurr.mpbBuff+4, &mpdwChannelsA[diPrev.ibLine], sizeof(ulong)); break;
//
//    case EVE_CHECKUP_DAY_SKIP:
//    case EVE_CHECKUP_MON_SKIP:
//    case EVE_CHECKUP_DAY_FAIL:
//    case EVE_CHECKUP_MON_FAIL:
//    case EVE_CHECKUP_DAY:
//    case EVE_CHECKUP_MON:   memcpy(&reCurr.mpbBuff+0, &daAlt, sizeof(date)); break;
//
//    case EVE_CHECKUP_CANAL: memcpy(&reCurr.mpbBuff+0, &ibCan, sizeof(uchar));
//                            memcpy(&reCurr.mpbBuff+1, &diPrev, sizeof(digital)); break;
//
//    case EVE_CHECKUP_DAY_NEXT:
//    case EVE_CHECKUP_MON_NEXT: memcpy(&reCurr.mpbBuff+0, &daAlt, sizeof(date));
//                               memcpy(&reCurr.mpbBuff+6, &ibGrp, sizeof(uchar)); break;
//
//    case EVE_CHECKUP_INFO:  memcpy(&reCurr.mpbBuff+0, &cbCheckupDays, sizeof(uchar));
//                            memcpy(&reCurr.mpbBuff+1, &cbCheckupErrorDay, sizeof(uchar));
//                            memcpy(&reCurr.mpbBuff+2, &cbCheckupErrorMon, sizeof(uchar)); break;
//
//    case EVE_DEVICE_P_DEFECT: memcpy(&reCurr.mpbBuff+0, &tiDig, sizeof(time)); break;

    case EVE_EXTENDED_0_ERROR: PutChar(0, bRecord);
                               PutChar(1, bExt0Counter);
                               PutChar(2, bExt0Limit); break;
  }

  CloseRecord(AUX_RECORD, i);

  return CloseOut();
}