コード例 #1
0
void handle_clear(struct cfw_message *msg)
{
	ll_storage_clear_req_msg_t * req = (ll_storage_clear_req_msg_t *) msg;
	ll_storage_clear_rsp_msg_t * resp =
		(ll_storage_clear_rsp_msg_t *) cfw_alloc_rsp_msg(msg,
		MSG_ID_LL_CLEAR_RSP, sizeof(*resp));

	if (cir_storage_clear((cir_storage_t *)req->storage, req->size) == CBUFFER_STORAGE_SUCCESS)
		resp->rsp_header.status = DRV_RC_OK;
	else
		resp->rsp_header.status = DRV_RC_FAIL;

	cfw_send_message(resp);
}
コード例 #2
0
void handle_clear(struct cfw_message *msg)
{
	circular_storage_clear_req_msg_t *req =
		(circular_storage_clear_req_msg_t *)msg;
	circular_storage_service_clear_rsp_msg_t *resp =
		(circular_storage_service_clear_rsp_msg_t *)cfw_alloc_rsp_msg(
			msg,
			MSG_ID_CIRCULAR_STORAGE_SERVICE_CLEAR_RSP,
			sizeof(*resp));

	if (cir_storage_clear((cir_storage_t *)req->storage,
			      req->elt_count) == CBUFFER_STORAGE_SUCCESS)
		resp->status = DRV_RC_OK;
	else
		resp->status = DRV_RC_FAIL;

	cfw_send_message(resp);
}
コード例 #3
0
cir_storage_err_t cir_storage_pop(cir_storage_t *self,
                                  uint8_t *buf,
                                  uint32_t buf_size)
{
	cir_storage_flash_t *storage = (cir_storage_flash_t *)self;
	if ( (buf_size > storage->block_size) || (buf_size <= 0) || (buf == NULL) ) {
		return CBUFFER_STORAGE_ERROR;
	}

	/* nothing to read */
	if (READ_PTR(storage) == WRITE_PTR(storage)) {
		return CBUFFER_STORAGE_EMPTY_ERROR;
	}

	if (storage->read(READ_PTR(storage), buf_size, buf) != 0) {
		return CBUFFER_STORAGE_ERROR;
	}

	/* We increase data pointer read and copy it in pointers block */
	return cir_storage_clear(self, buf_size);
}