1/******************************************************************************
2 *
3 *  Copyright (C) 2003-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
19/******************************************************************************
20 *
21 *  This is the interface file for the synchronization server call-out
22 *  functions.
23 *
24 ******************************************************************************/
25#ifndef BTA_FS_CO_H
26#define BTA_FS_CO_H
27
28#include <time.h>
29
30#include "bta_api.h"
31#include "goep_fs.h"
32#include "obx_api.h"
33
34/*****************************************************************************
35**  Constants and Data Types
36*****************************************************************************/
37
38#ifndef BTA_FS_CO_MAX_SSN_ENTRIES
39#define BTA_FS_CO_MAX_SSN_ENTRIES   10
40#endif
41
42/* Maximum path length supported by FS_CO */
43#ifndef BTA_FS_CO_PATH_LEN
44#define BTA_FS_CO_PATH_LEN          294
45#endif
46
47#ifndef BTA_FS_CO_TEST_ROOT
48#define BTA_FS_CO_TEST_ROOT         "test_files"
49#endif
50
51#define BTA_FS_CO_TEST_TYPE_NONE    0
52#define BTA_FS_CO_TEST_TYPE_REJECT  1
53#define BTA_FS_CO_TEST_TYPE_SUSPEND 2
54
55#ifndef BTA_FS_CO_TEST_AB_END
56#define BTA_FS_CO_TEST_AB_END   BTA_FS_CO_TEST_TYPE_NONE
57#endif
58
59/**************************
60**  Common Definitions
61***************************/
62
63/* Status codes returned by call-out functions, or in call-in functions as status */
64#define BTA_FS_CO_OK            GOEP_OK
65#define BTA_FS_CO_FAIL          GOEP_FAIL   /* Used to pass all other errors */
66#define BTA_FS_CO_EACCES        GOEP_EACCES
67#define BTA_FS_CO_ENOTEMPTY     GOEP_ENOTEMPTY
68#define BTA_FS_CO_EOF           GOEP_EOF
69#define BTA_FS_CO_EODIR         GOEP_EODIR
70#define BTA_FS_CO_ENOSPACE      GOEP_ENOSPACE/* Returned in bta_fs_ci_open if no room */
71#define BTA_FS_CO_EIS_DIR       GOEP_EIS_DIR
72#define BTA_FS_CO_RESUME        GOEP_RESUME /* used in ci_open, on resume */
73#define BTA_FS_CO_NONE          GOEP_NONE /* used in ci_open, on resume (no file to resume) */
74
75typedef UINT16 tBTA_FS_CO_STATUS;
76
77/* the index to the permission flags */
78#define BTA_FS_PERM_USER    0
79#define BTA_FS_PERM_GROUP   1
80#define BTA_FS_PERM_OTHER   2
81/* max number of the permission flags */
82#define BTA_FS_PERM_SIZE    3
83
84/* Flags passed to the open function (bta_fs_co_open)
85**      Values are OR'd together. (First 3 are
86**      mutually exclusive.
87*/
88#define BTA_FS_O_RDONLY         GOEP_O_RDONLY
89#define BTA_FS_O_WRONLY         GOEP_O_WRONLY
90#define BTA_FS_O_RDWR           GOEP_O_RDWR
91
92#define BTA_FS_O_CREAT          GOEP_O_CREAT
93#define BTA_FS_O_EXCL           GOEP_O_EXCL
94#define BTA_FS_O_TRUNC          GOEP_O_TRUNC
95
96#define BTA_FS_O_MODE_MASK(x)      (((UINT16)(x)) & 0x0003)
97
98/* Origin for the bta_fs_co_seek function  */
99#define BTA_FS_SEEK_SET         GOEP_SEEK_SET
100#define BTA_FS_SEEK_CUR         GOEP_SEEK_CUR
101#define BTA_FS_SEEK_END         GOEP_SEEK_END
102
103/* mode field in bta_fs_co_access callout */
104#define BTA_FS_ACC_EXIST        GOEP_ACC_EXIST
105#define BTA_FS_ACC_READ         GOEP_ACC_READ
106#define BTA_FS_ACC_RDWR         GOEP_ACC_RDWR
107
108#define BTA_FS_LEN_UNKNOWN      GOEP_LEN_UNKNOWN
109#define BTA_FS_INVALID_FD       GOEP_INVALID_FD
110#define BTA_FS_INVALID_APP_ID   (0xFF)  /* this app_id is reserved */
111
112/* mode field in tBTA_FS_DIRENTRY (OR'd together) */
113#define BTA_FS_A_RDONLY         GOEP_A_RDONLY
114#define BTA_FS_A_DIR            GOEP_A_DIR      /* Entry is a sub directory */
115
116#define BTA_FS_CTIME_LEN        GOEP_CTIME_LEN  /* Creation time "yyyymmddTHHMMSSZ" */
117
118/* Return structure type for a directory entry */
119typedef struct
120{
121    UINT32  refdata;            /* holder for OS specific data used to get next entry */
122    UINT32  filesize;
123    char    crtime[BTA_FS_CTIME_LEN]; /* "yyyymmddTHHMMSSZ", or "" if none */
124    char    *p_name;            /* Contains the addr of memory to copy name into */
125    UINT8   mode;               /* BTA_FS_A_RDONLY and/or BTA_FS_A_DIR */
126} tBTA_FS_DIRENTRY;
127
128/* session state */
129enum
130{
131    BTA_FS_CO_SESS_ST_NONE,
132    BTA_FS_CO_SESS_ST_ACTIVE,
133    BTA_FS_CO_SESS_ST_SUSPEND,
134    BTA_FS_CO_SESS_ST_RESUMING
135};
136typedef UINT8   tBTA_FS_CO_SESS_ST;
137
138
139
140/* a data type to keep an array of ssn/file offset - the info can be saved to NV */
141typedef struct
142{
143    char        path[BTA_FS_CO_PATH_LEN + 1];   /* the "current path". path[0]==0-> root */
144    char        file[BTA_FS_CO_PATH_LEN + 1];   /* file[0] !=0 on resume -> the previous suspended session had opened files */
145    int         oflags;  /* the flag to open the file */
146    BD_ADDR     bd_addr;
147    UINT8       sess_info[OBX_SESSION_INFO_SIZE];
148    UINT32      offset;         /* last file offset */
149    UINT32      timeout;        /* the timeout value on suspend */
150    time_t      suspend_time;   /* the time of suspend */
151    UINT16      nbytes;         /* number of bytes for last read/write */
152    UINT8       ssn;
153    UINT8       info;           /* info for BTA on the client side */
154    UINT8       app_id;
155    tBTA_FS_CO_SESS_ST  sess_st;
156} tBTA_FS_CO_SESSION;
157
158/*****************************************************************************
159**  Function Declarations
160*****************************************************************************/
161/**************************
162**  Common Functions
163***************************/
164/*******************************************************************************
165**
166** Function         bta_fs_co_init
167**
168** Description      This function is executed as a part of the start up sequence
169**                  to make sure the control block is initialized.
170**
171** Parameters       void.
172**
173** Returns          void
174**
175**
176*******************************************************************************/
177BTA_API extern void bta_fs_co_init(void);
178
179/*******************************************************************************
180**
181** Function         bta_fs_co_open
182**
183** Description      This function is executed by BTA when a file is opened.
184**                  The phone uses this function to open
185**                  a file for reading or writing.
186**
187** Parameters       p_path  - Fully qualified path and file name.
188**                  oflags  - permissions and mode (see constants above)
189**                  size    - size of file to put (0 if unavailable or not applicable)
190**                  evt     - event that must be passed into the call-in function.
191**                  app_id  - application ID specified in the enable functions.
192**                            It can be used to identify which profile is the caller
193**                            of the call-out function.
194**
195** Returns          void
196**
197**                  Note: Upon completion of the request, a file descriptor (int),
198**                        if successful, and an error code (tBTA_FS_CO_STATUS)
199**                        are returned in the call-in function, bta_fs_ci_open().
200**
201*******************************************************************************/
202BTA_API extern void bta_fs_co_open(const char *p_path, int oflags, UINT32 size,
203                           UINT16 evt, UINT8 app_id);
204
205/*******************************************************************************
206**
207** Function         bta_fs_co_session_info
208**
209** Description      This function is executed by BTA when a reliable session is
210**                  established (p_sess_info != NULL) or ended (p_sess_info == NULL).
211**
212** Parameters       bd_addr     - the peer address
213**                  p_sess_info - the session ID and related information.
214**                  app_id  - application ID specified in the enable functions.
215**                            It can be used to identify which profile is the caller
216**                            of the call-out function.
217**
218** Returns          void
219**
220*******************************************************************************/
221BTA_API extern void bta_fs_co_session_info(BD_ADDR bd_addr, UINT8 *p_sess_info, UINT8 ssn,
222                                           tBTA_FS_CO_SESS_ST new_st, char *p_path, UINT8 *p_info, UINT8 app_id);
223
224/*******************************************************************************
225**
226** Function         bta_fs_co_resume_op
227**
228** Description      This function is executed by BTA when a reliable session is
229**                  resumed and there was an interrupted operation.
230**
231** Parameters       offset  - the session ID and related information.
232**                  evt     - event that must be passed into the call-in function.
233**                  app_id  - application ID specified in the enable functions.
234**                            It can be used to identify which profile is the caller
235**                            of the call-out function.
236**
237** Returns          void
238**
239*******************************************************************************/
240BTA_API extern void bta_fs_co_resume_op(UINT32 offset, UINT16 evt, UINT8 app_id);
241
242/*******************************************************************************
243**
244** Function         bta_fs_co_suspend
245**
246** Description      This function is executed by BTA when a reliable session is
247**                  suspended.
248**
249** Parameters       bd_addr - the peer address
250**                  ssn     - the session sequence number.
251**                  info    - the BTA specific information (like last active operation).
252**                  p_offset- the location to receive object offset of the suspended session
253**                  app_id  - application ID specified in the enable functions.
254**                            It can be used to identify which profile is the caller
255**                            of the call-out function.
256**
257** Returns          void
258**
259*******************************************************************************/
260BTA_API extern void bta_fs_co_suspend(BD_ADDR bd_addr, UINT8 *p_sess_info, UINT8 ssn,
261                                      UINT32 *p_timeout, UINT32 *p_offset, UINT8 info, UINT8 app_id);
262
263/*******************************************************************************
264**
265** Function         bta_fs_co_resume
266**
267** Description      This function is executed by BTA when resuming a session.
268**                  This is used to retrieve the session ID and related information
269**
270** Parameters       evt     - event that must be passed into the call-in function.
271**                  app_id  - application ID specified in the enable functions.
272**                            It can be used to identify which profile is the caller
273**                            of the call-out function.
274**
275** Returns          void
276**
277**                  Note: Upon completion of the request, the related session information,
278**                        if successful, and an error code (tBTA_FS_CO_STATUS)
279**                        are returned in the call-in function, bta_fs_ci_resume().
280**
281*******************************************************************************/
282BTA_API extern void bta_fs_co_resume(UINT16 evt, UINT8 app_id);
283
284/*******************************************************************************
285**
286** Function         bta_fs_co_sess_ssn
287**
288** Description      This function is executed by BTA when resuming a session.
289**                  This is used to inform call-out module if the ssn/file offset
290**                  needs to be adjusted.
291**
292** Parameters       ssn     - the session sequence number of the first request
293**                            after resume.
294**                  app_id  - application ID specified in the enable functions.
295**                            It can be used to identify which profile is the caller
296**                            of the call-out function.
297**
298** Returns          void
299**
300*******************************************************************************/
301BTA_API extern void bta_fs_co_sess_ssn(int fd, UINT8 ssn, UINT8 app_id);
302
303/*******************************************************************************
304**
305** Function         bta_fs_co_setdir
306**
307** Description      This function is executed by BTA when the server changes the
308**                  local path
309**
310** Parameters       p_path  - the new path.
311**                  app_id  - application ID specified in the enable functions.
312**                            It can be used to identify which profile is the caller
313**                            of the call-out function.
314**
315** Returns          void
316**
317*******************************************************************************/
318BTA_API extern void bta_fs_co_setdir(const char *p_path, UINT8 app_id);
319
320/*******************************************************************************
321**
322** Function         bta_fs_co_close
323**
324** Description      This function is called by BTA when a connection to a
325**                  client is closed.
326**
327** Parameters       fd      - file descriptor of file to close.
328**                  app_id  - application ID specified in the enable functions.
329**                            It can be used to identify which profile is the caller
330**                            of the call-out function.
331**
332** Returns          (tBTA_FS_CO_STATUS) status of the call.
333**                      [BTA_FS_CO_OK if successful],
334**                      [BTA_FS_CO_FAIL if failed  ]
335**
336*******************************************************************************/
337BTA_API extern tBTA_FS_CO_STATUS bta_fs_co_close(int fd, UINT8 app_id);
338
339/*******************************************************************************
340**
341** Function         bta_fs_co_read
342**
343** Description      This function is called by BTA to read in data from the
344**                  previously opened file on the phone.
345**
346** Parameters       fd      - file descriptor of file to read from.
347**                  p_buf   - buffer to read the data into.
348**                  nbytes  - number of bytes to read into the buffer.
349**                  evt     - event that must be passed into the call-in function.
350**                  ssn     - session sequence number. Ignored, if bta_fs_co_open
351**							  was not called with BTA_FS_CO_RELIABLE.
352**                  app_id  - application ID specified in the enable functions.
353**                            It can be used to identify which profile is the caller
354**                            of the call-out function.
355**
356** Returns          void
357**
358**                  Note: Upon completion of the request, bta_fs_ci_read() is
359**                        called with the buffer of data, along with the number
360**                        of bytes read into the buffer, and a status.  The
361**                        call-in function should only be called when ALL requested
362**                        bytes have been read, the end of file has been detected,
363**                        or an error has occurred.
364**
365*******************************************************************************/
366BTA_API extern void bta_fs_co_read(int fd, UINT8 *p_buf, UINT16 nbytes, UINT16 evt,
367                           UINT8 ssn, UINT8 app_id);
368
369/*******************************************************************************
370**
371** Function         bta_fs_co_write
372**
373** Description      This function is called by io to send file data to the
374**                  phone.
375**
376** Parameters       fd      - file descriptor of file to write to.
377**                  p_buf   - buffer to read the data from.
378**                  nbytes  - number of bytes to write out to the file.
379**                  evt     - event that must be passed into the call-in function.
380**                  ssn     - session sequence number. Ignored, if bta_fs_co_open
381**							  was not called with BTA_FS_CO_RELIABLE.
382**                  app_id  - application ID specified in the enable functions.
383**                            It can be used to identify which profile is the caller
384**                            of the call-out function.
385**
386** Returns          void
387**
388**                  Note: Upon completion of the request, bta_fs_ci_write() is
389**                        called with the file descriptor and the status.  The
390**                        call-in function should only be called when ALL requested
391**                        bytes have been written, or an error has been detected,
392**
393*******************************************************************************/
394BTA_API extern void bta_fs_co_write(int fd, const UINT8 *p_buf, UINT16 nbytes, UINT16 evt,
395                            UINT8 ssn, UINT8 app_id);
396
397/*******************************************************************************
398**
399** Function         bta_fs_co_seek
400**
401** Description      This function is called by io to move the file pointer
402**                  of a previously opened file to the specified location for
403**                  the next read or write operation.
404**
405** Parameters       fd      - file descriptor of file.
406**                  offset  - Number of bytes from origin.
407**                  origin  - Initial position: BTA_FS_SEEK_SET, BTA_FS_SEEK_CUR,
408**                            or BTA_FS_SEEK_END.
409**
410** Returns          void
411**
412*******************************************************************************/
413BTA_API extern void bta_fs_co_seek (int fd, INT32 offset, INT16 origin, UINT8 app_id);
414
415/*******************************************************************************
416**
417** Function         bta_fs_co_access
418**
419** Description      This function is called to check the existence of a file or
420**                  directory.
421**
422** Parameters       p_path   - (input) file or directory to access (fully qualified path).
423**                  mode     - (input) [BTA_FS_ACC_EXIST, BTA_FS_ACC_READ, or BTA_FS_ACC_RDWR]
424**                  p_is_dir - (output) returns TRUE if p_path specifies a directory.
425**                  app_id   - (input) application ID specified in the enable functions.
426**                                     It can be used to identify which profile is the caller
427**                                     of the call-out function.
428**
429** Returns          (tBTA_FS_CO_STATUS) status of the call.
430**                   [BTA_FS_CO_OK if it exists]
431**                   [BTA_FS_CO_EACCES if permissions are wrong]
432**                   [BTA_FS_CO_FAIL if it does not exist]
433**
434*******************************************************************************/
435BTA_API extern tBTA_FS_CO_STATUS bta_fs_co_access(const char *p_path, int mode,
436                                          BOOLEAN *p_is_dir, UINT8 app_id);
437
438/*******************************************************************************
439**
440** Function         bta_fs_co_mkdir
441**
442** Description      This function is called to create a directory with
443**                  the pathname given by path. The pathname is a null terminated
444**                  string. All components of the path must already exist.
445**
446** Parameters       p_path   - (input) name of directory to create (fully qualified path).
447**                  app_id   - (input) application ID specified in the enable functions.
448**                                     It can be used to identify which profile is the caller
449**                                     of the call-out function.
450**
451** Returns          (tBTA_FS_CO_STATUS) status of the call.
452**                  [BTA_FS_CO_OK if successful]
453**                  [BTA_FS_CO_FAIL if unsuccessful]
454**
455*******************************************************************************/
456BTA_API extern tBTA_FS_CO_STATUS bta_fs_co_mkdir(const char *p_path, UINT8 app_id);
457
458/*******************************************************************************
459**
460** Function         bta_fs_co_rmdir
461**
462** Description      This function is called to remove a directory whose
463**                  name is given by path. The directory must be empty.
464**
465** Parameters       p_path   - (input) name of directory to remove (fully qualified path).
466**                  app_id   - (input) application ID specified in the enable functions.
467**                                     It can be used to identify which profile is the caller
468**                                     of the call-out function.
469**
470** Returns          (tBTA_FS_CO_STATUS) status of the call.
471**                      [BTA_FS_CO_OK if successful]
472**                      [BTA_FS_CO_EACCES if read-only]
473**                      [BTA_FS_CO_ENOTEMPTY if directory is not empty]
474**                      [BTA_FS_CO_FAIL otherwise]
475**
476*******************************************************************************/
477BTA_API extern tBTA_FS_CO_STATUS bta_fs_co_rmdir(const char *p_path, UINT8 app_id);
478
479/*******************************************************************************
480**
481** Function         bta_fs_co_unlink
482**
483** Description      This function is called by to remove a file whose name
484**                  is given by p_path.
485**
486** Parameters       p_path   - (input) name of file to remove (fully qualified path).
487**                  app_id   - (input) application ID specified in the enable functions.
488**                                     It can be used to identify which profile is the caller
489**                                     of the call-out function.
490**
491** Returns          (tBTA_FS_CO_STATUS) status of the call.
492**                      [BTA_FS_CO_OK if successful]
493**                      [BTA_FS_CO_EACCES if read-only]
494**                      [BTA_FS_CO_FAIL otherwise]
495**
496*******************************************************************************/
497BTA_API extern tBTA_FS_CO_STATUS bta_fs_co_unlink(const char *p_path, UINT8 app_id);
498
499/*******************************************************************************
500**
501** Function         bta_fs_co_getdirentry
502**
503** Description      This function is called to retrieve a directory entry for the
504**                  specified path.  The first/next directory should be filled
505**                  into the location specified by p_entry.
506**
507** Parameters       p_path      - directory to search (Fully qualified path)
508**                  first_item  - TRUE if first search, FALSE if next search
509**                                      (p_cur contains previous)
510**                  p_entry (input/output) - Points to last entry data (valid when
511**                                           first_item is FALSE)
512**                  evt     - event that must be passed into the call-in function.
513**                  app_id  - application ID specified in the enable functions.
514**                            It can be used to identify which profile is the caller
515**                            of the call-out function.
516**
517** Returns          void
518**
519**                  Note: Upon completion of the request, the status is passed
520**                        in the bta_fs_ci_direntry() call-in function.
521**                        BTA_FS_CO_OK is returned when p_entry is valid,
522**                        BTA_FS_CO_EODIR is returned when no more entries [finished]
523**                        BTA_FS_CO_FAIL is returned if an error occurred
524**
525*******************************************************************************/
526BTA_API extern void bta_fs_co_getdirentry(const char *p_path, BOOLEAN first_item,
527                                   tBTA_FS_DIRENTRY *p_entry, UINT16 evt,
528                                   UINT8 app_id);
529
530/*******************************************************************************
531**
532** Function         bta_fs_co_copy
533**
534** Description      This function is called to copy a file/directory whose
535**                  name is given by p_src_path to p_dest_path.
536**
537** Parameters       p_src_path  - (input) name of file/directory to be copied (fully qualified path).
538**                  p_dest_path - (input) new name of file/directory(fully qualified path).
539**                  p_perms     - the permission of the new object.
540**                  evt     - event that must be passed into the call-in function.
541**                  app_id   - (input) application ID specified in the enable functions.
542**                                     It can be used to identify which profile is the caller
543**                                     of the call-out function.
544**
545** Returns          (tBTA_FS_CO_STATUS) status of the call.
546**                      [BTA_FS_CO_OK if successful]
547**                      [BTA_FS_CO_EIS_DIR if p_src_path is a folder]
548**                      [BTA_FS_CO_EACCES if p_dest_path already exists or could not be created (invalid path);
549**                                        or p_src_path is a directory and p_dest_path specifies a different path. ]
550**                      [BTA_FS_CO_FAIL otherwise]
551**
552*******************************************************************************/
553BTA_API extern void bta_fs_co_copy(const char *p_src_path, const char *p_dest_path, UINT8 *p_perms, UINT16 evt, UINT8 app_id);
554
555/*******************************************************************************
556**
557** Function         bta_fs_co_rename
558**
559** Description      This function is called to move a file/directory whose
560**                  name is given by p_src_path to p_dest_path.
561**
562** Parameters       p_src_path  - (input) name of file/directory to be moved (fully qualified path).
563**                  p_dest_path - (input) new name of file/directory(fully qualified path).
564**                  p_perms     - the permission of the new object.
565**                  app_id   - (input) application ID specified in the enable functions.
566**                                     It can be used to identify which profile is the caller
567**                                     of the call-out function.
568**
569** Returns          (tBTA_FS_CO_STATUS) status of the call.
570**                      [BTA_FS_CO_OK if successful]
571**                      [BTA_FS_CO_EACCES if p_dest_path already exists or could not be created (invalid path);
572**                                        or p_src_path is a directory and p_dest_path specifies a different path. ]
573**                      [BTA_FS_CO_FAIL otherwise]
574**
575*******************************************************************************/
576BTA_API extern void bta_fs_co_rename(const char *p_src_path, const char *p_dest_path, UINT8 *p_perms, UINT16 evt, UINT8 app_id);
577
578/*******************************************************************************
579**
580** Function         bta_fs_co_set_perms
581**
582** Description      This function is called to set the permission a file/directory
583**                  with name as p_src_path.
584**
585** Parameters       p_src_path  - (input) name of file/directory to set permission (fully qualified path).
586**                  p_perms     - the permission .
587**                  app_id   - (input) application ID specified in the enable functions.
588**                                     It can be used to identify which profile is the caller
589**                                     of the call-out function.
590**
591** Returns          (tBTA_FS_CO_STATUS) status of the call.
592**                      [BTA_FS_CO_OK if successful]
593**                      [BTA_FS_CO_EACCES if p_dest_path already exists or could not be created (invalid path);
594**                                        or p_src_path is a directory and p_dest_path specifies a different path. ]
595**                      [BTA_FS_CO_FAIL otherwise]
596**
597*******************************************************************************/
598BTA_API extern void bta_fs_co_set_perms(const char *p_src_path,  UINT8 *p_perms, UINT16 evt, UINT8 app_id);
599
600/*******************************************************************************
601**
602** Function         bta_fs_co_sess_fopen
603**
604** Description      This function is called by bta_fs_co_open to keep track of
605**                  the opened file (for reliable session suspend/resume.)
606**
607** Parameters       p_path  - Fully qualified path and file name.
608**                  oflags  - permissions and mode (see constants above)
609**                  app_id  - application ID specified in the enable functions.
610**                            It can be used to identify which profile is the caller
611**                            of the call-out function.
612**
613** Returns          void
614**
615*******************************************************************************/
616BTA_API extern void bta_fs_co_sess_fopen(const char *p_path, int oflags, UINT8 app_id);
617
618/*******************************************************************************
619**
620** Function         bta_fs_co_sess_fclose
621**
622** Description      This function is called by bta_fs_co_close
623**
624** Parameters       app_id  - application ID specified in the enable functions.
625**                            It can be used to identify which profile is the caller
626**                            of the call-out function.
627**
628** Returns          void
629**
630*******************************************************************************/
631BTA_API extern void bta_fs_co_sess_fclose(UINT8 app_id);
632
633/*******************************************************************************
634**
635** Function         bta_fs_co_sess_offset
636**
637** Description      This function is called by bta_fs_co_write to keep track of
638**                  the last file offset (Only the receiving side needs to keep
639**                  track of the file offset)
640**
641** Returns          void
642**
643*******************************************************************************/
644BTA_API extern void bta_fs_co_sess_offset(UINT8 ssn, INT32 pos, UINT16 nbytes, UINT8 app_id);
645
646/*******************************************************************************
647**
648** Function         bta_fs_co_suspended_addr
649**
650** Description      find the peer address of the suspended session control block
651**                  for the given an app_id.
652**
653** Returns          the control block found.
654**
655*******************************************************************************/
656BTA_API extern UINT8 *bta_fs_co_suspended_addr(UINT8 app_id);
657
658/*******************************************************************************
659**
660** Function         bta_fs_co_num_suspended_session
661**
662** Description      find the number of suspended session control blocks for the
663**                  given an app_id.
664**
665** Returns          the number of control blocks found.
666**
667*******************************************************************************/
668BTA_API extern UINT8 bta_fs_co_num_suspended_session(UINT8 app_id);
669
670/*******************************************************************************
671**
672** Function         bta_fs_co_get_active_session
673**
674** Description      find the active session control block for the given an app_id.
675**
676** Returns          the control block found.
677**
678*******************************************************************************/
679BTA_API extern tBTA_FS_CO_SESSION *bta_fs_co_get_active_session(UINT8 app_id);
680
681/*******************************************************************************
682**
683** Function         bta_fs_co_init_db
684**
685** Description      Initialize the session control blocks for platform.
686**
687** Returns          void
688**
689*******************************************************************************/
690BTA_API extern void bta_fs_co_init_db (tBTA_FS_CO_SESSION *p_first);
691
692/*******************************************************************************
693**
694** Function         bta_fs_convert_oflags
695**
696** Description      This function converts the open flags from BTA into MFS.
697**
698** Returns          BTA FS status value.
699**
700*******************************************************************************/
701BTA_API extern int bta_fs_convert_bta_oflags(int bta_oflags);
702
703#endif /* BTA_FS_CO_H */
704