Dynamically linked library for Motorola P2K phones Copyright Vilko :)
Download HEREFunctions: P2K_SendCMD (DWORD Cmd, void* SendBuff, DWORD SendSize, void* RecvBuff, DWORD* RecvSize); this function only for advanced users File_ListEx(ptr Buffer, dword Count,ProgressFuncPtr) First parameter as in File_List ProgressFuncPtr - pointer to function: void __stdcall TestFunc(FILELIST* fl, int CurIndex, int TotalCount) fl - pointer to FILELIST structures File_listEx CurIndex - index of last file name TotalCount - count of records Example: void __stdcall TestFunc(FILELIST* fl, int CurIndex, int TotalCount) { if (!TotalCount) return; float f = ((float)CurIndex/TotalCount) * 100; Log(clBlack,"p2kapi.GetFileListEx: completed %2.0f%% - %s",f,fl[CurIndex].FileName); } ... // somewhere, when we want to get filelist int FileCount = p2k->GetFileCountEx("/a/*"); FILELIST *fl = new FILELIST[FileCount]; p2k->GetFileListEx(FileList,FileCount,TestFunc); Mode_SwitchToP2k(StatusProc) Switch phone from AT mode to P2K if not called P2K_Init, it's will be called with StatusProc parameter (no return value) Mode_SwitchToAT() Switch phone from P2K mode to AT (no return value) P2K_Init(StatusProc); Library initialization, phone status monitor starting. StatusProc - pointer to a procedure, that will be called on phone detect/disconect (or 0, if procedure call is not needing). Returns 0 on initialization success or 1 on failure.
Library calls StatusProc procedure with one parameter: 1 - if phone detected; 0 - if phone not detected. P2K_Restart(); Restart a phone.
P2K_Suspend(); Switch phone to suspended mode P2K_GetStatus(); Gets connection status. Returns 0 if phone not found or 1 if phone found. File_CreateDir(lpstr FileName, byte Attribute); Creates new directory lpstr DirName - pointer to string containing a directory name byte Attribute - new attribute for a created dir Attribute is combination of 3 bits: bit0 - readonly bit1 - hidden bit2 - system Returns always 0. File_DeleteDir(lpstr DirName); Deleting a directory lpstr FileName - pointer to a string containing directory name Returns 0 if success or -1 on error. File_Create(lpstr FileName, byte Attribute); Creates new or opens existing file
lpstr FileName - pointer to string containing a file name (in case of nested filesystem - full path with directories) byte Attribute - new attribute for a created/opened file Attribute is combination of 3 bits: bit0 - readonly bit1 - hidden bit2 - system Phone not allows to open more than 1 file simultaneously. Returns 0 if opening was success or -1 on error. (advanced error codes - :) please wait for next version) File_Close(); Closes previously opened file. Returns 0 if closing was success or -1 on error. File_Read(ptr Buffer, dword Size); Reading data from file. Reads data from BOF or from position, what was setted by File_SetPointer function. ptr Buffer - pointer to a buffer for receiving data from a file. dword Size - data size to read. Buffer size couldn't be less then this size. Returns 0 if reading was success or -1 on error. File_Write(ptr Buffer, dword Size); Writing data to a file. Writes data from BOF or from position, what was setted by File_SetPointer function. ptr Buffer - pointer to a buffer containing data to write. dword Size - data size to write. Returns 0 if writing was success or -1 on error. ATTENTION! This function not checks a free space for writing. But phone needs for a some free space for temporary files created by phone. File_SetPointer(dword Offset, byte MoveMethod); Set pointer to file reading/writing dword Offset - new position of pointer byte MoveMethod - pointer setting method: 0 - offset from BOF 1 - offset from current position of pointer 2 - offset from EOF Returns 0 if success or -1 on error. File_Delete(lpstr FileName); Deleting a file lpstr FileName - pointer to a string containing file name (in case of nested filesystem - full path with directories) to delete. Returns 0 if success or -1 on error. File_VolInfo(ptr Buffer); Receiving an information about free space and volume name. ptr Buffer - pointer to a buffer for volume name receiving (must be >= 128 bytes) Returns free space size in bytes or -1 on error. File_GetFreeSpace(lpstr disk) Receiving an information about free space lpstr disk - name of idsk ("/c/") File_CountEx(lpstr disk_and_mask); Receiving an information about files count in phone. Returns files count or -1 on error. lpstr disk_and_mask) - pointer to disk name and mask ("/c/*.mp3"). File_Count(); Receiving an information about files count in phone. Returns files count or -1 on error. File_List(ptr Buffer, word Count); Receiving a file list from phone. File_Count() function must be called directly before this function. ptr Buffer - pointer to a buffer for files list receiving files list is saved as: dd file size dw attribute 1 dw attribute 2 string of 1F8h length - file name. Record size per 1 file is 200h bytes Records count is equivalent to files count in phone (result of File_Count() function) According to this, size of buffer for files list must be File_Count*200h word Count - files count to read (result of File_Count() function) Returns a maximum length of file name for current phone model or -1 on error.. Seem_Read(word SeemNo, word RecordNo,word StartOffset,word Bytes, ptr Data); Reading of seem cell
SeemNo - Seem cell number RecordNo - Seem record number StartOffset - Offset for seem reading from (0 - from cell beginning) Bytes - Bytes count for reading (0 - read from beginning to end) ptr Data - pointer to a buffer for receiving seem cell data If "Bytes" parameter not specified, then buffer length must be >= 2710h bytes Returns count of readed bytes or -1 on error. Seem_Write(word SeemNo, word RecordNo, word StartOffset, word Bytes, ptr Data); Writing seem cell SeemNo - Seem cell number RecordNo - Seem record number StartOffset - Offset for seem writing from (0 - from cell beginning) Bytes - Bytes count for writing (0 - write from beginning to end) ptr Data - pointer to a buffer containing seem cell data for writing Returns 0 if writing was success or -1 on error.
|