Esempio n. 1
0
struct cmd_pkg_t* pkg_parse(char* pkg)
{
    struct cmd_pkg_t* cmd_pkg;
    cmd_pkg = (struct cmd_pkg_t*)malloc(sizeof(struct cmd_pkg_t));
    if (!cmd_pkg) {
        printf("[%s]malloc fail.\n", __func__);
        return NULL;
    }
    if (CMD_PKG_TYPE == get_package_type(pkg)) {
        printf("[%s]parse cmd pkg.\n", __func__);
        cmd_pkg->cmd_type = pkg[CMD_PKG_CMD_TYPE_OFFSET];
        cmd_pkg->cmd = (pkg[CMD_PKG_CMD_H_OFFSET] << 8) | (pkg[CMD_PKG_CMD_L_OFFSET]);
        printf("[%s]cmd type:%d cmd:%d\n", __func__, cmd_pkg->cmd_type, cmd_pkg->cmd);
        if (get_uint_bit(pkg[CMD_PKG_CMD_DATA_EXIST_OFFSET], CMD_PKG_CMD_DATA_EXIST_BIT)) {
            cmd_pkg->data_len = (pkg[CMD_PKG_CMD_DATA_LEN_H_OFFSET] << 8) | (pkg[CMD_PKG_CMD_DATA_LEN_L_OFFSET]);
            printf("[%s]data len:%d\n", __func__, cmd_pkg->data_len);
            cmd_pkg->data = (char*)malloc(cmd_pkg->data_len);
            if (cmd_pkg->data == NULL) {
                free(cmd_pkg);
                return NULL;
            }
            memcpy(cmd_pkg->data, &pkg[CMD_PKG_CMD_DATA_OFFSET], cmd_pkg->data_len);
        }
        else {
            cmd_pkg->data_len = 0;
            cmd_pkg->data = NULL;
        }
    }
    else {
        printf("[%s]parse data pkg.\n", __func__);
    }
    return cmd_pkg;
}
Esempio n. 2
0
int main()
{
	int ret;
	ret = get_package_type("pack.tar.gz");
	printf("%d\n", ret);

}