Ejemplo n.º 1
0
/** OP_FILE_REPLACE */
static int
fstorage_op_file_replace(fs_ctx_t *ctx, btp_t *btp, const char *key, const char *filepath)
{
	int err;
	FILE *fd;
	size_t size;
	btp_pkg_t *pkg_in = NULL, *pkg_out = NULL;
	char hash[16];
	
	if ((err = fs_hash(key, (char *)&hash)) != ERR_OK)
		return (err);
	
	/* Opening file to get file size with tell function */
	if (!(fd = fopen(filepath, "rb")))
		return (ERR_FILESYSTEM);
	
	if ((err = fs_file_size(filepath, &size)) != ERR_OK)
		return (err);
	
	/* Creating pkg to snd */
	assert(ERR_OK == btp_pkg_init(&pkg_out));
	btp_pkg_set_opcode(pkg_out, OP_FILE_REPLACE);
	assert(ERR_OK == btp_pkg_add_string("hash", hash, &pkg_out));
	assert(ERR_OK == btp_pkg_add_number("size", (int64_t)size, &pkg_out));
	
	/* Sending pkg */
	err = btp_snd(btp, pkg_out);
	
	btp_pkg_fini(pkg_out);
	
	if (err != ERR_OK)
		return (err);
	
	/* Receiving pkg and extract arguments */
	if ((err = btp_rcv(btp, &pkg_in)) != ERR_OK)
		return (err);
	
	err = btp_pkg_get_error(pkg_in);
	
	btp_pkg_fini(pkg_in);
	
	if (err != ERR_OK)
		return (err);
	
	/* Sending file */
	btp_snd_file(btp, filepath);
	
	/* Receiving pkg */
	if ((err = btp_rcv(btp, &pkg_in)) != ERR_OK)
		return (err);
	
	err = btp_pkg_get_error(pkg_in);
	
	btp_pkg_fini(pkg_in);
	
	return (err);
}
Ejemplo n.º 2
0
/** OP_FILE_SEND */
static int
fstorage_op_file_send(fs_ctx_t *ctx, btp_t *btp, const char *key, const char *filepath)
{
	int err;
	size_t size;
	btp_arg_t *arg;
	btp_pkg_t *pkg_in = NULL, *pkg_out = NULL;
	char *hash, tmp[16];
	
	if ((err = fs_file_size(filepath, &size)) != ERR_OK)
		return (err);
	
	if ((err = fs_hash(key, (char *)&tmp)) != ERR_OK)
		return (err);
	
	/* Creating pkg to snd */
	assert(ERR_OK == btp_pkg_init(&pkg_out));
	btp_pkg_set_opcode(pkg_out, OP_FILE_SEND);
	assert(ERR_OK == btp_pkg_add_number("size", (int64_t)size, &pkg_out));
	assert(ERR_OK == btp_pkg_add_string("hash", (char *)tmp, &pkg_out));
	assert(ERR_OK == btp_pkg_add_number("mimetype", fs_mimetype_get_id_from_filename(filepath), &pkg_out));
	
	/* Sending pkg */
	err = btp_snd(btp, pkg_out);
	
	btp_pkg_fini(pkg_out);
	
	if (err != ERR_OK)
		return (err);
	
	/* Receiving pkg and extract arguments */
	if ((err = btp_rcv(btp, &pkg_in)) != ERR_OK)
		return (err);
	
	err = btp_pkg_get_error(pkg_in);
	
	if (err == ERR_OK && !(btp_pkg_arg_by_name(pkg_in, "hash", &arg) == ERR_OK && btp_arg_get_string(arg, &hash) == ERR_OK))
		err = ERR_CORRUPTED;
	
	btp_pkg_fini(pkg_in);
	
	if (err != ERR_OK)
		return (err);
	
	/* Sending file */
	btp_snd_file(btp, filepath);
	
	/* Receiving pkg */
	if ((err = btp_rcv(btp, &pkg_in)) != ERR_OK)
		return (err);
	
	err = btp_pkg_get_error(pkg_in);
	
	btp_pkg_fini(pkg_in);
	
	return (err);
}
Ejemplo n.º 3
0
uint32 camsensor_reg_file_read
(
    const char *filename,
    uint32 register_set_size,
    camsensor_parser_register_t *register_set
)
{
  //int i;
  fs_rsp_msg_type        rsp_msg;     
  fs_handle_type         fhandle = 0;

  unsigned char *param_file;
  unsigned char *temp_ptr;
  uint32 file_size;
  uint32 register_index = 0;

  //u_int16_t param_version;

  u_int16_t reg_address;
  u_int16_t reg_val;


  fs_nametest(filename, FS_TEST_FILE, NULL, &rsp_msg);

  if ( !rsp_msg.nametest.name_found )
  {
    MSG_FATAL(" File Not Found! ",0,0,0);
    return 0;
  } 
  else 
  {  //when SensorParamTable exists
    fs_open(filename, FS_OA_READONLY, NULL, NULL, &rsp_msg);

    MSG_FATAL(" File Open O.K ! ",0,0,0);

    if (rsp_msg.open.handle == FS_NULL_HANDLE)
    {
      MSG_ERROR ("File was not opened!!!",0,0,0);
      fs_close(fhandle,NULL,&rsp_msg);
      return 0;
    }
    fhandle = rsp_msg.open.handle;

    fs_file_size(filename, NULL, &rsp_msg);
    if (rsp_msg.file_size.status != FS_OKAY_S)
    {
      MSG_ERROR ("File size read fail!!!",0,0,0);
      rsp_msg.file_size.size = MAX_SENSORPARAM_SIZE;
      fs_close(fhandle,NULL,&rsp_msg);
      ERR_FATAL("ERR!",0,0,0);
      return 0;
    }
    file_size = rsp_msg.file_size.size;

    param_file = (unsigned char *)malloc(file_size+2);

    if(param_file==NULL)
    {
      fs_close(fhandle,NULL,&rsp_msg);
      ERR_FATAL("ERR!",0,0,0);
      return 0;
    }

    *(param_file+file_size)= NULL;
    *(param_file+file_size+1)=NULL;

    fs_read ( fhandle, (void *)param_file, file_size, NULL, &rsp_msg );
  
    if ( rsp_msg.read.status != FS_OKAY_S )
    {
      MSG_ERROR ("File read file header fail!!!",0,0,0);
      free((void *)param_file);
      fs_close(fhandle,NULL,&rsp_msg);
      return 0;
    }
    else
    {
      fs_close(fhandle, NULL, &rsp_msg);
      if ( rsp_msg.close.status != FS_OKAY_S )
      {
        MSG_ERROR ("File closing fail!!!",0,0,0);
      }

      temp_ptr = param_file;

      while (temp_ptr)
      {  
//20070622_c@m_이창원_chg [ 
//        if ((temp_ptr=find_next_address(temp_ptr, &reg_address)))
        if ((temp_ptr=find_next_address(temp_ptr, &reg_address)) != NULL)
        {
//20070622_c@m_이창원_chg [ 
//          if ((temp_ptr=find_next_val(temp_ptr, &reg_val)))
          if ((temp_ptr=find_next_val(temp_ptr, &reg_val)) != NULL)
          {
              register_set[register_index].address = reg_address;
              register_set[register_index].value = reg_val;
              register_index++;
              if (register_index >= register_set_size)
              {
                ERR_FATAL("ERR!",0,0,0);
                return 0;
              }
          }
        }
      }
    }

    free((void *)param_file);
  }

  return register_index;
}
Ejemplo n.º 4
0
/*
================================================================================
FUNCTION
================================================================================
*/
static int8_t * icp_hd_tup_load_file()
{
#if 0
 	CAM_INFO("%s  start\n",__func__);
	FILE *fs_handle = NULL;
	int32_t fs_size = NULL;
	int8_t *fs_stream = NULL;
	
	fs_handle = fopen(ICP_HD_TUP_FNAME, "r");
	if(fs_handle == NULL)
	{
	   CAM_INFO("<<%s (NULL) (file_name = %s, fs_handle = %d)", __func__, ICP_HD_TUP_FNAME, fs_handle);
	   return NULL;
	}	

	fseek(fs_handle, 0, SEEK_END);
	fs_size = ftell(fs_handle);
	CAM_INFO("fs_size = %d", fs_size);

	fs_stream = (int8_t *)malloc(fs_size);
	if (fs_stream == NULL)
	{
	    CAM_INFO("<<%s (NULL)", __func__);
	    fclose(fs_handle);
	    return NULL;
	}

	if(fread(fs_stream, sizeof(int8_t), fs_size, fs_handle) != fs_size)
	{
	     CAM_INFO("fread fs_size = %d", fs_size);
            fclose(fs_handle);
	     return NULL;
	}

	fclose(fs_handle);

	CAM_INFO("%s  end\n",__func__);

	return fs_stream;
#endif
return 0;
#if 0 //[[ PANTECH_CAMERA_PSJ_0100405_BEGIN -- fs.h는 amss에서만 사용가능하므로 Aarm에서는 사용할 수 없다 stdio.h함수를 사용하여 변경
	fs_handle_type fs_handle = FS_NULL_HANDLE;
	fs_rsp_msg_type fs_rsp;
	int32_t fs_fsize = 0;
	int8_t *fs_stream = NULL;

	CAM_INFO("%s  start\n",__func__);

	fs_open(ICP_HD_TUP_FNAME, FS_OA_READONLY, NULL, NULL, &fs_rsp);
	if((fs_rsp.open.status != FS_OKAY_S) || (fs_rsp.open.handle == FS_NULL_HANDLE))
	{
	   CAM_INFO("<<%s (NULL) (%d, %d)", __func__, fs_rsp.open.status, fs_rsp.open.handle);
	   return NULL;
	}	
	fs_handle = fs_rsp.open.handle;

	fs_file_size(ICP_HD_TUP_FNAME, NULL, &fs_rsp);
	if ((fs_rsp.file_size.status != FS_OKAY_S) || (fs_rsp.file_size.size == 0))
	{
	    CAM_INFO("<<%s (NULL) (%d, %d)", __func__, fs_rsp.file_size.status, fs_rsp.file_size.size);
	    fs_close(fs_handle, NULL, &fs_rsp);
	    return NULL;
	}
	fs_fsize = fs_rsp.file_size.size;

	fs_stream = (int8_t *)malloc(fs_fsize);
	if (fs_stream == NULL)
	{
	    CAM_INFO("<<%s (NULL)", __func__);
	    fs_close(fs_handle, NULL, &fs_rsp);
	    return NULL;
	}

	fs_read(fs_handle, (void *)fs_stream, fs_fsize, NULL, &fs_rsp);
	if ((fs_rsp.read.status != FS_OKAY_S) || (fs_rsp.read.count == 0))
	{
	    free(fs_stream);
	    CAM_INFO("<<%s (NULL) (%d, %d)", __func__, fs_rsp.read.status, fs_rsp.read.count);
	    fs_close(fs_handle, NULL, &fs_rsp);
	    return NULL;
	}

	fs_close(fs_handle, NULL, &fs_rsp);
	if (fs_rsp.close.status != FS_OKAY_S)
	{
	    free(fs_stream);
	    CAM_INFO("<<%s (NULL) (%d)", __func__, fs_rsp.close.status, 0);
	    return NULL;
	}

	CAM_INFO("%s  end\n",__func__);

	return fs_stream;
#endif //]] PANTECH_CAMERA_PSJ_0100405_END -- fs.h는 amss에서만 사용가능하므로 Aarm에서는 사용할 수 없다 stdio.h함수를 사용하여 변경
}