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 75 typedef 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 */ 119 typedef 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 */ 129 enum 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 }; 136 typedef 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 */ 141 typedef 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 *******************************************************************************/ 177 BTA_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 *******************************************************************************/ 202 BTA_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 *******************************************************************************/ 221 BTA_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 *******************************************************************************/ 240 BTA_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 *******************************************************************************/ 260 BTA_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 *******************************************************************************/ 282 BTA_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 *******************************************************************************/ 301 BTA_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 *******************************************************************************/ 318 BTA_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 *******************************************************************************/ 337 BTA_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 *******************************************************************************/ 366 BTA_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 *******************************************************************************/ 394 BTA_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 *******************************************************************************/ 413 BTA_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 *******************************************************************************/ 435 BTA_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 *******************************************************************************/ 456 BTA_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 *******************************************************************************/ 477 BTA_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 *******************************************************************************/ 497 BTA_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 *******************************************************************************/ 526 BTA_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 *******************************************************************************/ 553 BTA_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 *******************************************************************************/ 576 BTA_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 *******************************************************************************/ 598 BTA_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 *******************************************************************************/ 616 BTA_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 *******************************************************************************/ 631 BTA_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 *******************************************************************************/ 644 BTA_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 *******************************************************************************/ 656 BTA_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 *******************************************************************************/ 668 BTA_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 *******************************************************************************/ 679 BTA_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 *******************************************************************************/ 690 BTA_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 *******************************************************************************/ 701 BTA_API extern int bta_fs_convert_bta_oflags(int bta_oflags); 702 703 #endif /* BTA_FS_CO_H */ 704