/* 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 ); }
/* 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 ); }
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(); }
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(); }
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(); }
/* 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(); }
/* 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 ); }
/* 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 ); }
//终止录音 BOOL CWaveIn::StopRec() { //停止录音 CloseRecord(); //休眠1500毫秒 Sleep(800); //释放缓存 FreeBuffer(); //关闭录音设备 if (CloseDev()) { //停止线程 StopThread(); } //返回 return TRUE; }
/* 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 ); } }
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(); }
/* 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 }
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(); }