# File

GSM_Error GSM_JADFindData(GSM_File *File, char *Vendor, char *Name, char *JAR, char *Version, int *Size)

  Parses JAD file.

  Parameters:

    - File – JAD file data.

    - Vendor – Buffer for vendor name.

    - Name – Buffer for application name.

    - JAR – Buffer for JAR URL.

    - Version – Buffer for version of application.

    - Size – Pointer to integer to store size.

  Returns:

    Error code.

GSM_Error GSM_ReadFile(const char *FileName, GSM_File *File)

  Reads file from filesystem to GSM_File structure.

  Parameters:

    - FileName – File to read.

    - File – Storage for data.

  Returns:

    Error code.

void GSM_IdentifyFileFormat(GSM_File *File)

  Identifies file format by checking it’s content.

  Parameters:

    - File – File data, Type member will be filled in.

GSM_Error GSM_GetNextFileFolder(GSM_StateMachine *s, GSM_File *File, gboolean start)

  Gets next filename from filesystem.

  Parameters:

    - s – State machine pointer.

    - File – File structure where path will be stored, if start is FALSE, it should contain data from previous reading (at least ID).

    - start – Whether we’re starting transfer.

  Returns:

    Error code.

GSM_Error GSM_GetFolderListing(GSM_StateMachine *s, GSM_File *File, gboolean start)

  Gets listing of folder.

  Parameters:

    - s – State machine pointer.

    - File – File structure where path will be stored, if start is FALSE, it should contain data from previous reading (at least ID). On start it should contain path to directory.

    - start – Whether we’re starting transfer.

  Returns:

    Error code.

GSM_Error GSM_GetNextRootFolder(GSM_StateMachine *s, GSM_File *File)

  Gets next root folder.

  Parameters:

    - s – State machine pointer.

    - File – File structure where path will be stored.

  Returns:

    Error code.

GSM_Error GSM_SetFileAttributes(GSM_StateMachine *s, GSM_File *File)

  Sets file system attributes.

  Parameters:

    - s – State machine pointer.

    - File – File structure with path and attributes.

  Returns:

    Error code.

GSM_Error GSM_GetFilePart(GSM_StateMachine *s, GSM_File *File, int *Handle, size_t *Size)

  Retrieves file part.

  Parameters:

    - s – State machine pointer.

    - File – File structure with path, data will be stored here.

    - Size – Size of transmitted data.

    - Handle – Handle for saving file, some drivers need this information to be kept between function calls.

  Returns:

    Error code, ERR_EMPTY after transfer end.

GSM_Error GSM_AddFilePart(GSM_StateMachine *s, GSM_File *File, size_t *Pos, int *Handle)

  Adds file to filesystem. Call repeatedly until function returns ERR_EMPTY.

  Parameters:

    - s – State machine pointer.

    - File – File structure and data.

    - Pos – Position of transmitted data. Should be 0 on start.

    - Handle – Handle for saving file, some drivers need this information to be kept between function calls.

  Returns:

    Error code, ERR_EMPTY after transfer end.

GSM_Error GSM_SendFilePart(GSM_StateMachine *s, GSM_File *File, size_t *Pos, int *Handle)

  Sends file to phone, it’s up to phone to decide what to do with it. It is usually same as when you receive file over Bluetooth from other phone. Use in same way as GSM_AddFilePart.

  Parameters:

    - s – State machine pointer.

    - File – File structure and data.

    - Pos – Position of transmitted data. Should be 0 on start.

    - Handle – Handle for saving file, some drivers need this information to be kept between function calls.

  Returns:

    Error code, ERR_EMPTY after transfer end.

GSM_Error GSM_GetFileSystemStatus(GSM_StateMachine *s, GSM_FileSystemStatus *Status)

  Acquires filesystem status.

  Parameters:

    - s – State machine pointer.

    - Status – Storage for status information.

  Returns:

    Error code.

GSM_Error GSM_DeleteFile(GSM_StateMachine *s, unsigned char *ID)

  Deletes file from filesystem.

  Parameters:

    - s – State machine pointer.

    - ID – ID of folder.

  Returns:

    Error code.

GSM_Error GSM_AddFolder(GSM_StateMachine *s, GSM_File *File)

  Adds folder to filesystem.

  Parameters:

    - s – State machine pointer.

    - File – Structure containing information about new folder (Name and FullName).

  Returns:

    Error code.

GSM_Error GSM_DeleteFolder(GSM_StateMachine *s, unsigned char *ID)

  Deletes folder from filesystem.

  Parameters:

    - s – State machine pointer.

    - ID – ID of folder.

  Returns:

    Error code.

struct GSM_FileSystemStatus

  Status of filesystem.

enum GSM_FileType

  File type identifier.

  Values:

  enumerator GSM_File_Other
  enumerator GSM_File_Java_JAR
  enumerator GSM_File_Image_JPG
  enumerator GSM_File_Image_BMP
  enumerator GSM_File_Image_GIF
  enumerator GSM_File_Image_PNG
  enumerator GSM_File_Image_WBMP
  enumerator GSM_File_Video_3GP
  enumerator GSM_File_Sound_AMR
  enumerator GSM_File_Sound_NRT

    DCT4 binary format

  enumerator GSM_File_Sound_MIDI
  enumerator GSM_File_MMS
  enumerator GSM_File_INVALID

struct GSM_File

  Structure for holding file information and data.

  Public Members

  size_t Used

    How many bytes are used.

  unsigned char Name[2 * (GSM_MAX_FILENAME_LENGTH + 1)]

    Name in Unicode

  gboolean Folder

    True, when folder

  int Level

    How much file is nested on filesystem.

  GSM_FileType Type

    Type of file.

  unsigned char ID_FullName[2 * (GSM_MAX_FILENAME_ID_LENGTH + 1)]

    ID in Unicode

  unsigned char *Buffer

    Pointer to file data.

  GSM_DateTime Modified

    Last modification date.

  gboolean ModifiedEmpty

    Whether modification date is empty.

  gboolean Protected

    Protected file attribute.

  gboolean ReadOnly

    Read only file attribute.

  gboolean Hidden

    Hidden file attribute.

  gboolean System

    System file attribute.