mirror of
https://github.com/tsukumijima/px4_drv.git
synced 2025-07-23 12:13:06 +02:00
winusb: DriverHost_PX4: デバイスが正常に初期化されないことのある問題に対する緩和策を追加
This commit is contained in:
@@ -370,7 +370,7 @@ static int it930x_read_firmware_version(struct it930x_bridge *it930x,
|
|||||||
IT930X_CMD_QUERYINFO,
|
IT930X_CMD_QUERYINFO,
|
||||||
&wb, &rb,
|
&wb, &rb,
|
||||||
NULL, false);
|
NULL, false);
|
||||||
if (!ret)
|
if (!ret && fw_version)
|
||||||
*fw_version = (buf[0] << 24) | (buf[1] << 16) |
|
*fw_version = (buf[0] << 24) | (buf[1] << 16) |
|
||||||
(buf[2] << 8) | buf[3];
|
(buf[2] << 8) | buf[3];
|
||||||
|
|
||||||
@@ -616,6 +616,19 @@ int it930x_term(struct it930x_bridge *it930x)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int it930x_raise(struct it930x_bridge *it930x)
|
||||||
|
{
|
||||||
|
int ret = 0, i;
|
||||||
|
|
||||||
|
for (i = 0; i < 5; i++) {
|
||||||
|
ret = it930x_read_firmware_version(it930x, NULL);
|
||||||
|
if (!ret)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int it930x_load_firmware(struct it930x_bridge *it930x, const char *filename)
|
int it930x_load_firmware(struct it930x_bridge *it930x, const char *filename)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
@@ -81,6 +81,7 @@ int it930x_write_reg_mask(struct it930x_bridge *it930x,
|
|||||||
int it930x_init(struct it930x_bridge *it930x);
|
int it930x_init(struct it930x_bridge *it930x);
|
||||||
int it930x_term(struct it930x_bridge *it930x);
|
int it930x_term(struct it930x_bridge *it930x);
|
||||||
|
|
||||||
|
int it930x_raise(struct it930x_bridge *it930x);
|
||||||
int it930x_load_firmware(struct it930x_bridge *it930x, const char *filename);
|
int it930x_load_firmware(struct it930x_bridge *it930x, const char *filename);
|
||||||
int it930x_init_warm(struct it930x_bridge *it930x);
|
int it930x_init_warm(struct it930x_bridge *it930x);
|
||||||
int it930x_set_gpio_mode(struct it930x_bridge *it930x,
|
int it930x_set_gpio_mode(struct it930x_bridge *it930x,
|
||||||
|
@@ -165,6 +165,10 @@ int Px4Device::Init()
|
|||||||
stream_ctx_.stream_buf[i] = receivers_[i]->GetStreamBuffer();
|
stream_ctx_.stream_buf[i] = receivers_[i]->GetStreamBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret = it930x_raise(&it930x_);
|
||||||
|
if (ret)
|
||||||
|
goto fail_device;
|
||||||
|
|
||||||
ret = it930x_load_firmware(&it930x_, "it930x-firmware.bin");
|
ret = it930x_load_firmware(&it930x_, "it930x-firmware.bin");
|
||||||
if (ret)
|
if (ret)
|
||||||
goto fail_device;
|
goto fail_device;
|
||||||
|
@@ -164,6 +164,10 @@ int PxMltDevice::Init()
|
|||||||
it930x_.config.input[i].port_number = params_[static_cast<int>(model_)][i].port_number;
|
it930x_.config.input[i].port_number = params_[static_cast<int>(model_)][i].port_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret = it930x_raise(&it930x_);
|
||||||
|
if (ret)
|
||||||
|
goto fail_device;
|
||||||
|
|
||||||
ret = it930x_load_firmware(&it930x_, "it930x-firmware.bin");
|
ret = it930x_load_firmware(&it930x_, "it930x-firmware.bin");
|
||||||
if (ret)
|
if (ret)
|
||||||
goto fail_device;
|
goto fail_device;
|
||||||
|
Reference in New Issue
Block a user