Home | History | Annotate | Download | only in include
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2000-2012 Broadcom Corporation
      4  *
      5  *  Licensed under the Apache License, Version 2.0 (the "License");
      6  *  you may not use this file except in compliance with the License.
      7  *  You may obtain a copy of the License at:
      8  *
      9  *  http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *  Unless required by applicable law or agreed to in writing, software
     12  *  distributed under the License is distributed on an "AS IS" BASIS,
     13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *  See the License for the specific language governing permissions and
     15  *  limitations under the License.
     16  *
     17  ******************************************************************************/
     18 #ifndef GOEP_FS_H
     19 #define GOEP_FS_H
     20 
     21 #include "bt_target.h"
     22 
     23 /*****************************************************************************
     24 **     Constants
     25 *****************************************************************************/
     26 
     27 /* Flags passed to the open function (tGOEP_OPEN_CBACK)
     28 **      Values are OR'd together. (First 3 are
     29 **      mutually exclusive.
     30 */
     31 #define GOEP_O_RDONLY            0x0000
     32 #define GOEP_O_WRONLY            0x0001
     33 #define GOEP_O_RDWR              0x0002
     34 
     35 #define GOEP_O_CREAT             0x0100
     36 #define GOEP_O_EXCL              0x0200
     37 #define GOEP_O_TRUNC             0x1000
     38 
     39 
     40 #define GOEP_LEN_UNKNOWN          0xFFFFFFFF
     41 #define GOEP_INVALID_FD          (-1)
     42 
     43 /* Values passed to the access function (tGOEP_ACCESS_CBACK)
     44 */
     45 #define GOEP_ACC_EXIST           0x0
     46 #define GOEP_ACC_READ            0x4
     47 #define GOEP_ACC_RDWR            0x6
     48 
     49 /* Constants used in directory listing structure */
     50 #define GOEP_A_RDONLY            0x1
     51 #define GOEP_A_DIR               0x2      /* Entry is a sub directory */
     52 
     53 #define GOEP_CTIME_LEN           17       /* Creation time "yyyymmddTHHMMSSZ" */
     54 
     55 /*****************************************************************************
     56 **     Seek Constants
     57 *****************************************************************************/
     58 /* Origin for the seek function (tGOEP_SEEK_CBACK) */
     59 #define GOEP_SEEK_SET    0
     60 #define GOEP_SEEK_CUR    1
     61 #define GOEP_SEEK_END    2
     62 
     63 
     64 
     65 /*****************************************************************************
     66 **    Typedefs
     67 *****************************************************************************/
     68 typedef INT32   tGOEP_FD;
     69 
     70 enum
     71 {
     72     GOEP_OK,
     73     GOEP_FAIL,
     74     GOEP_EACCES,
     75     GOEP_ENOTEMPTY,
     76     GOEP_EOF,
     77     GOEP_EODIR,
     78     GOEP_ENOSPACE,
     79     GOEP_EIS_DIR,
     80     GOEP_RESUME,
     81     GOEP_NONE
     82 };
     83 typedef UINT16 tGOEP_STATUS;
     84 
     85 /* Structure passed in Directory Entry Callback to be filled in */
     86 typedef struct
     87 {
     88     UINT32  refdata;                /* holder for OS specific data used to get next entry */
     89     UINT32  filesize;
     90     char    crtime[GOEP_CTIME_LEN]; /* "yyyymmddTHHMMSSZ", or "" if none */
     91     char   *p_name;                 /* Contains the addr of memory to copy name into */
     92     UINT8   mode;                   /* GOEP_A_RDONLY and/or GOEP_A_DIR */
     93 } tGOEP_DIRENTRY;
     94 
     95 
     96 /*****************************************************************************
     97 **    Typedefs for messages from response functions
     98 *****************************************************************************/
     99 typedef struct
    100 {
    101     BT_HDR          hdr;
    102     tGOEP_FD        fd;
    103     tGOEP_STATUS    status;
    104     UINT32          file_size;
    105 } tGOEP_OPEN_RSP;
    106 
    107 typedef struct
    108 {
    109     BT_HDR          hdr;
    110     tGOEP_FD        fd;
    111     tGOEP_STATUS    status;
    112     UINT16          bytes_read;
    113 } tGOEP_READ_RSP;
    114 
    115 typedef struct
    116 {
    117     BT_HDR          hdr;
    118     tGOEP_FD        fd;
    119     tGOEP_STATUS    status;
    120 } tGOEP_WRITE_RSP;
    121 
    122 typedef struct
    123 {
    124     BT_HDR       hdr;
    125     tGOEP_STATUS status;
    126 } tGOEP_DIRENTRY_RSP;
    127 
    128 /*****************************************************************************
    129 **    Object Store Interface
    130 *****************************************************************************/
    131 /*******************************************************************************
    132 **
    133 ** Callback Function: tGOEP_OPEN_CBACK
    134 **
    135 ** Description  This function is executed by OBX profiles to open
    136 **              a file for reading or writing.
    137 **
    138 ** Parameters   p_path      - Fully qualified path and file name.
    139 **              flags       - permissions and mode (see constants above)
    140 **              size        - size of file to put (0 if unavailable or not applicable)
    141 **              event_id    - code that must be passed to the call-in function.
    142 **
    143 ** Returns      void
    144 **
    145 ** Note:        Upon completion of the request, a file descriptor (tGOEP_FD),
    146 **              file size (UINT32), and an status code (tGOEP_STATUS)
    147 **              are returned in GOEP_OpenRsp().
    148 **
    149 *******************************************************************************/
    150 typedef void (tGOEP_OPEN_CBACK) (const UINT8 *p_name, UINT16 flags, UINT32 size,
    151                                  UINT16 event_id, UINT8 app_id);
    152 
    153 /*******************************************************************************
    154 **
    155 ** Callback Function: tGOEP_CLOSE_CBACK
    156 **
    157 ** Description  This function is executed by OBX profiles when the file descriptor
    158 **              is no longer in use.
    159 **
    160 ** Returns      void
    161 **
    162 *******************************************************************************/
    163 typedef void (tGOEP_CLOSE_CBACK) (tGOEP_FD fd, UINT8 app_id);
    164 
    165 /*******************************************************************************
    166 **
    167 ** Callback Function: tGOEP_READ_CBACK
    168 **
    169 ** Description  This function is executed by OBX profiles to read in data from the
    170 **              previously opened file.
    171 **
    172 ** Returns      void
    173 **
    174 ** Note:        Upon completion of the request, GOEP_ReadRsp() is
    175 **              called with the buffer of data, along with the number
    176 **              of bytes read into the buffer, and a status.  The
    177 **              call-in function should only be called when ALL requested
    178 **              bytes have been read, the end of file has been detected,
    179 **              or an error has occurred.
    180 **
    181 *******************************************************************************/
    182 typedef void (tGOEP_READ_CBACK) (tGOEP_FD fd, void *p_data, INT16 size,
    183                                  UINT16 event_id, UINT8 app_id);
    184 
    185 /*******************************************************************************
    186 **
    187 ** Callback Function: tGOEP_WRITE_CBACK
    188 **
    189 ** Description  This function is executed by OBX profiles to write the data to the
    190 **              previously opened file.
    191 **
    192 ** Returns      void
    193 **
    194 ** Note:        Upon completion of the request, GOEP_WriteRsp() is
    195 **              called with the file descriptor and the status.  The
    196 **              call-in function should only be called when ALL requested
    197 **              bytes have been written, or an error has been detected,
    198 **
    199 *******************************************************************************/
    200 typedef void (tGOEP_WRITE_CBACK) (tGOEP_FD fd, const void *p_data, INT16 size,
    201                                   UINT16 event_id, UINT8 app_id);
    202 
    203 /*******************************************************************************
    204 **
    205 ** Callback Function: tGOEP_SEEK_CBACK
    206 **
    207 ** Description  This function is executed by OBX profiles to Move a file pointer
    208 **              of a previously opened file to the specified location for the
    209 **              next read or write operation.
    210 **
    211 ** Returns      void
    212 **
    213 *******************************************************************************/
    214 typedef void (tGOEP_SEEK_CBACK) (tGOEP_FD fd, INT32 offset, INT16 origin, UINT8 app_id);
    215 
    216 
    217 /*******************************************************************************
    218 **
    219 ** Callback Function: tGOEP_DIRENTRY_CBACK
    220 **
    221 ** Description  This function is called to retrieve a directory entry for the
    222 **              specified path.  The first/next directory should be filled
    223 **              into the location specified by p_entry.
    224 **
    225 ** Parameters   p_path     - directory to search (Fully qualified path)
    226 **              first_item - TRUE if first search, FALSE if next search
    227 **                                      (p_cur contains previous)
    228 **              p_entry (input/output) - Points to last entry data (valid when
    229 **                                           first_item is FALSE)
    230 **              event_id - event that must be passed into the call-in function.
    231 **
    232 ** Returns      void
    233 **
    234 ** Note:        Upon completion of the request, GOEP_DirentryRsp() is
    235 **              filled in entry and the status.
    236 **              GOEP_OK is returned when p_entry is valid,
    237 **              GOEP_EODIR is returned when no more entries [finished]
    238 **              GOEP_FAIL is returned if an error occurred
    239 **
    240 *******************************************************************************/
    241 typedef void (tGOEP_DIRENTRY_CBACK) (const char *p_path, BOOLEAN first_item,
    242                                      tGOEP_DIRENTRY *p_entry, UINT16 event_id,
    243                                      UINT8 app_id);
    244 
    245 /*******************************************************************************
    246 **
    247 ** Callback Function: tGOEP_ACCESS_CBACK
    248 **
    249 ** Description  This function is called to check the existence of a file or
    250 **              directory.
    251 **
    252 ** Returns      (tGOEP_STATUS) status of the call.
    253 **               [GOEP_OK if it exists]
    254 **               [GOEP_EACCES if permissions are wrong]
    255 **               [GOEP_FAIL if it does not exist]
    256 **
    257 *******************************************************************************/
    258 typedef tGOEP_STATUS (tGOEP_ACCESS_CBACK) (const char *p_path, UINT16 mode,
    259                                            BOOLEAN *p_is_dir, UINT8 app_id);
    260 
    261 /*******************************************************************************
    262 **
    263 ** Callback Function: tGOEP_MKDIR_CBACK
    264 **
    265 ** Description  This function is called to create a directory with
    266 **              the pathname given by path. The pathname is a null terminated
    267 **              string. All components of the path must already exist.
    268 **
    269 ** Parameters   p_path   - (input) name of directory to create (fully qualified path).
    270 **
    271 ** Returns      (tGOEP_STATUS) status of the call.
    272 **               [GOEP_OK if successful]
    273 **               [GOEP_FAIL if unsuccessful]
    274 **
    275 *******************************************************************************/
    276 typedef tGOEP_STATUS (tGOEP_MKDIR_CBACK) (const char *p_path, UINT8 app_id);
    277 
    278 /*******************************************************************************
    279 **
    280 ** Callback Function: tGOEP_RMDIR_CBACK
    281 **
    282 ** Description  This function is called to remove a directory whose
    283 **                  name is given by path. The directory must be empty.
    284 **
    285 ** Parameters   p_path   - (input) name of directory to remove (fully qualified path).
    286 **
    287 ** Returns      (tGOEP_STATUS) status of the call.
    288 **               [GOEP_OK if successful]
    289 **               [GOEP_EACCES if read-only]
    290 **               [GOEP_ENOTEMPTY if directory is not empty]
    291 **               [GOEP_FAIL otherwise]
    292 **
    293 *******************************************************************************/
    294 typedef tGOEP_STATUS (tGOEP_RMDIR_CBACK) (const char *p_path, UINT8 app_id);
    295 
    296 /*******************************************************************************
    297 **
    298 ** Callback Function: tGOEP_UNLINK_CBACK
    299 **
    300 ** Description  This function is called to remove a directory whose
    301 **                  name is given by path. The directory must be empty.
    302 **
    303 ** Parameters   p_path   - (input) name of file to remove (fully qualified path).
    304 **
    305 ** Returns      (tGOEP_STATUS) status of the call.
    306 **               [GOEP_OK if successful]
    307 **               [GOEP_EACCES if read-only]
    308 **               [GOEP_FAIL otherwise]
    309 **
    310 *******************************************************************************/
    311 typedef tGOEP_STATUS (tGOEP_UNLINK_CBACK) (const char *p_path, UINT8 app_id);
    312 
    313 
    314 /*****************************************************************************
    315 **     Prototypes
    316 *****************************************************************************/
    317 
    318 #ifdef __cplusplus
    319 extern "C" {
    320 #endif
    321 
    322 /*****************************************************************************
    323 **
    324 **  Function:    GOEP_OpenRsp
    325 **
    326 **  Purpose:     Report the status of tGOEP_OPEN_CBACK callback function.
    327 **
    328 **  Parameters:  fd         - File handle.
    329 **               status     - Status of the operation.
    330 **               file_size  - total number of bytes in this file.
    331 **               event_id   - event id as given in the tGOEP_OPEN_CBACK function.
    332 **
    333 **  Returns:     void
    334 **
    335 *****************************************************************************/
    336 GOEP_API extern void GOEP_OpenRsp (tGOEP_FD fd, tGOEP_STATUS status,
    337                                    UINT32 file_size, UINT16 event_id);
    338 
    339 /*****************************************************************************
    340 **
    341 **  Function:    GOEP_ReadRsp
    342 **
    343 **  Purpose:     Report the status of tGOEP_READ_CBACK callback function.
    344 **
    345 **  Parameters:  fd         - File handle.
    346 **               status     - Status of the operation.
    347 **               bytes_read - total number of bytes read from the file.
    348 **               event_id   - event id as given in the tGOEP_READ_CBACK function.
    349 **
    350 **  Returns:     void
    351 **
    352 *****************************************************************************/
    353 GOEP_API extern void GOEP_ReadRsp (tGOEP_FD fd, tGOEP_STATUS status,
    354                                    UINT16 bytes_read, UINT16 event_id);
    355 
    356 /*****************************************************************************
    357 **
    358 **  Function:    GOEP_WriteRsp
    359 **
    360 **  Purpose:     Report the status of tGOEP_WRITE_CBACK callback function.
    361 **
    362 **  Parameters:  fd         - File handle.
    363 **               status     - Status of the operation.
    364 **               event_id   - event id as given in the tGOEP_WRITE_CBACK function.
    365 **
    366 **  Returns:     void
    367 **
    368 *****************************************************************************/
    369 GOEP_API extern void GOEP_WriteRsp (tGOEP_FD fd, tGOEP_STATUS status, UINT16 event_id);
    370 
    371 /*******************************************************************************
    372 **
    373 ** Function     GOEP_DirentryRsp
    374 **
    375 ** Description  This function is called in response to the
    376 **              tGOEP_DIRENTRY_CBACK function with a filled in directory listing
    377 **              entry.
    378 **
    379 ** Parameters   status - GOEP_OK if p_entry points to a valid entry.
    380 **                       GOEP_EODIR if no more entries (p_entry is ignored).
    381 **                       GOEP_FAIL if any errors have occurred.
    382 **              event_id - event id as given in the tGOEP_DIRENTRY_CBACK function.
    383 **
    384 ** Returns      void
    385 **
    386 *******************************************************************************/
    387 GOEP_API extern void GOEP_DirentryRsp(tGOEP_STATUS status, UINT16 event_id);
    388 
    389 #ifdef __cplusplus
    390 }
    391 #endif
    392 
    393 #endif /* GOEP_FS_H */
    394