char *desc_uuid;
bt_gatt_characteristic_property_t props;
bt_gatt_permission_t perms;
- char supp_feat[OTP_FEATURE_LENGTH] = { 0x9C, 0x00, 0x00, 0x00,
+ char supp_feat[OTP_FEATURE_LENGTH] = { 0xDC, 0x00, 0x00, 0x00,
0x80, 0x00, 0x00, 0x00 };
ret = bluetooth_gatt_init();
char file_path[BT_FILE_PATH_MAX_LEN] = {0, };
int length;
- if (!selected_object) {
- BT_DBG("Object not selected");
- return;
- }
-
snprintf(file_path, sizeof(file_path), "%s%s",
directory, selected_object->name);
BT_DBG("file_path = [%s]", file_path);
object->curr_size = (uint32_t) st.st_size;
object->alloc_size = (uint32_t) st.st_size;
object->id = object_id;
- object->props = OBJECT_READ | OBJECT_WRITE | OBJECT_EXECUTE;
+ object->props = OBJECT_READ | OBJECT_WRITE |
+ OBJECT_EXECUTE | OBJECT_DELETE;
otp_object_list = g_slist_append(otp_object_list,
object);
char *remote_addr, struct indicate_info *info)
{
int ret = OACP_SUCCESS;
- int app_err = BLUETOOTH_ERROR_NONE;
+ int err = BLUETOOTH_ERROR_NONE;
int opcode = value[0];
uint32_t object_offset, length, object_size;
uint8_t mode = 0;
char *uuid;
- char absolute_path[BT_FILE_PATH_MAX_LEN] = {0, };
+ char absolute_file_path[BT_FILE_PATH_MAX_LEN] = {0, };
BT_INFO("OACP Opcode 0x%d", opcode);
- if (!otp_object_list) {
+ if (!selected_object) {
+ BT_DBG("Object not selected");
ret = OACP_INVALID_OBJ;
goto fail;
}
timeout_id = g_timeout_add(BT_OACP_MAX_TIMEOUT,
(GSourceFunc)__bt_oacp_create_timeout_cb, NULL);
g_free(uuid);
- ret = OACP_SUCCESS;
break;
case OACP_DELETE:
- ret = OACP_OPCODE_NOT_SUPPORTED;
+ snprintf(absolute_file_path, sizeof(absolute_file_path),
+ "%s%s", directory, selected_object->name);
+
+ BT_DBG("absolute_file_path = [%s]", absolute_file_path);
+
+ if (remove(absolute_file_path) != 0) {
+ BT_DBG("Error: unable to delete the file");
+ ret = OACP_OPERATION_FAILED;
+ goto fail;
+ }
+
+ BT_DBG("File deleted successfully");
+ selected_object = NULL;
break;
case OACP_CALC_CHECKSUM:
ret = OACP_OPCODE_NOT_SUPPORTED;
break;
case OACP_EXECUTE:
- if (!selected_object) {
- BT_DBG("Object not selected");
+ snprintf(absolute_file_path, sizeof(absolute_file_path),
+ "file://%s%s", directory, selected_object->name);
+
+ BT_DBG("absolute_file_path = [%s]", absolute_file_path);
+
+ err = _bt_otp_send_launch_request(absolute_file_path);
+ if (err != BLUETOOTH_ERROR_NONE) {
+ BT_DBG("Error: unable to launch the file");
ret = OACP_OPERATION_FAILED;
goto fail;
}
- snprintf(absolute_path, sizeof(absolute_path), "file://%s%s", directory,
- selected_object->name);
-
- BT_DBG("absolute_path = [%s]", absolute_path);
-
- app_err = _bt_otp_send_launch_request(absolute_path);
- if (app_err == BLUETOOTH_ERROR_NONE)
- ret = OACP_SUCCESS;
- else
- ret = OACP_OPERATION_FAILED;
+ BT_DBG("Successfully launched the file");
break;
case OACP_READ:
case OACP_WRITE:
oacp_op->length_sofar = 0;
oacp_op->fp = NULL;
- app_err = _bt_otp_open_otc_and_listen(remote_addr, "ListenOtc");
- if (app_err != BLUETOOTH_ERROR_NONE) {
+ err = _bt_otp_open_otc_and_listen(remote_addr, "ListenOtc");
+ if (err != BLUETOOTH_ERROR_NONE) {
ret = OACP_OPERATION_FAILED;
_bt_otp_free_oacp_op();
goto fail;
}
- ret = OACP_SUCCESS;
break;
case OACP_ABORT:
ret = OACP_OPCODE_NOT_SUPPORTED;
info->req_opcode = opcode;
info->result_code = ret;
info->resp_param = NULL;
- return app_err;
+ return BLUETOOTH_ERROR_NONE;
}
void convert_to_hex(struct object_metadata *object, char *type, char *value)