mirror of https://github.com/drowe67/librtlsdr.git
missing tuner routines
parent
c39f7f0711
commit
a08dd08f3c
|
@ -663,6 +663,87 @@ static int handle_query
|
||||||
break ;
|
break ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case RTLSDR_RPC_OP_GET_TUNER_GAINS:
|
||||||
|
{
|
||||||
|
uint32_t did;
|
||||||
|
size_t new_size;
|
||||||
|
uint8_t* buf;
|
||||||
|
size_t gain_size;
|
||||||
|
|
||||||
|
if (rtlsdr_rpc_msg_pop_uint32(q, &did)) goto on_error;
|
||||||
|
|
||||||
|
if ((rpcd->dev == NULL) || (rpcd->did != did)) goto on_error;
|
||||||
|
|
||||||
|
err = rtlsdr_get_tuner_gains(rpcd->dev, NULL);
|
||||||
|
if (err <= 0) goto on_error;
|
||||||
|
gain_size = err * sizeof(int);
|
||||||
|
|
||||||
|
new_size = r->off + sizeof(uint32_t) + gain_size;
|
||||||
|
if (rtlsdr_rpc_msg_realloc(r, new_size)) goto on_error;
|
||||||
|
buf = r->fmt + r->off + sizeof(uint32_t);
|
||||||
|
|
||||||
|
err = rtlsdr_get_tuner_gains(rpcd->dev, (int*)buf);
|
||||||
|
if (err <= 0) goto on_error;
|
||||||
|
|
||||||
|
rtlsdr_rpc_msg_push_uint32_safe(r, gain_size);
|
||||||
|
rtlsdr_rpc_msg_skip_safe(r, gain_size);
|
||||||
|
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
|
||||||
|
case RTLSDR_RPC_OP_SET_TUNER_GAIN:
|
||||||
|
{
|
||||||
|
uint32_t did;
|
||||||
|
uint32_t gain;
|
||||||
|
|
||||||
|
PRINTF("set_tuner_gain()\n");
|
||||||
|
|
||||||
|
if (rtlsdr_rpc_msg_pop_uint32(q, &did)) goto on_error;
|
||||||
|
if (rtlsdr_rpc_msg_pop_uint32(q, &gain)) goto on_error;
|
||||||
|
|
||||||
|
if ((rpcd->dev == NULL) || (rpcd->did != did)) goto on_error;
|
||||||
|
|
||||||
|
err = rtlsdr_set_tuner_gain(rpcd->dev, (int)gain);
|
||||||
|
if (err) goto on_error;
|
||||||
|
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
|
||||||
|
case RTLSDR_RPC_OP_GET_TUNER_GAIN:
|
||||||
|
{
|
||||||
|
uint32_t did;
|
||||||
|
|
||||||
|
PRINTF("get_tuner_gain()\n");
|
||||||
|
|
||||||
|
if (rtlsdr_rpc_msg_pop_uint32(q, &did)) goto on_error;
|
||||||
|
|
||||||
|
if ((rpcd->dev == NULL) || (rpcd->did != did)) goto on_error;
|
||||||
|
|
||||||
|
err = rtlsdr_get_tuner_gain(rpcd->dev);
|
||||||
|
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
|
||||||
|
case RTLSDR_RPC_OP_SET_TUNER_IF_GAIN:
|
||||||
|
{
|
||||||
|
uint32_t did;
|
||||||
|
uint32_t stage;
|
||||||
|
uint32_t gain;
|
||||||
|
|
||||||
|
PRINTF("set_tuner_if_gain()\n");
|
||||||
|
|
||||||
|
if (rtlsdr_rpc_msg_pop_uint32(q, &did)) goto on_error;
|
||||||
|
if (rtlsdr_rpc_msg_pop_uint32(q, &stage)) goto on_error;
|
||||||
|
if (rtlsdr_rpc_msg_pop_uint32(q, &gain)) goto on_error;
|
||||||
|
|
||||||
|
if ((rpcd->dev == NULL) || (rpcd->did != did)) goto on_error;
|
||||||
|
|
||||||
|
err = rtlsdr_set_tuner_if_gain(rpcd->dev, (int)stage, (int)gain);
|
||||||
|
if (err) goto on_error;
|
||||||
|
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
|
||||||
case RTLSDR_RPC_OP_SET_TUNER_GAIN_MODE:
|
case RTLSDR_RPC_OP_SET_TUNER_GAIN_MODE:
|
||||||
{
|
{
|
||||||
uint32_t did;
|
uint32_t did;
|
||||||
|
|
|
@ -647,28 +647,101 @@ int rtlsdr_rpc_get_tuner_type(void* devp)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rtlsdr_rpc_get_tuner_gains(void* dev, int* gainsp)
|
int rtlsdr_rpc_get_tuner_gains(void* devp, int* gainsp)
|
||||||
{
|
{
|
||||||
UNIMPL();
|
rtlsdr_rpc_dev_t* const dev = devp;
|
||||||
return -1;
|
rtlsdr_rpc_cli_t* const cli = dev->cli;
|
||||||
|
rtlsdr_rpc_msg_t* const q = &cli->query;
|
||||||
|
rtlsdr_rpc_msg_t* const r = &cli->reply;
|
||||||
|
const uint8_t* tmp;
|
||||||
|
size_t size;
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
rtlsdr_rpc_msg_reset(q);
|
||||||
|
rtlsdr_rpc_msg_set_op(q, RTLSDR_RPC_OP_GET_TUNER_GAINS);
|
||||||
|
if (rtlsdr_rpc_msg_push_uint32(q, dev->index)) goto on_error;
|
||||||
|
|
||||||
|
if (send_recv_msg(cli, q, r)) goto on_error;
|
||||||
|
|
||||||
|
err = rtlsdr_rpc_msg_get_err(r);
|
||||||
|
if (err <= 0) goto on_error;
|
||||||
|
|
||||||
|
if (rtlsdr_rpc_msg_pop_buf(r, &tmp, &size))
|
||||||
|
{
|
||||||
|
err = 0;
|
||||||
|
goto on_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO: endianess */
|
||||||
|
memcpy(gainsp, tmp, size);
|
||||||
|
|
||||||
|
on_error:
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rtlsdr_rpc_set_tuner_gain(void* dev, int gain)
|
int rtlsdr_rpc_set_tuner_gain(void* devp, int gain)
|
||||||
{
|
{
|
||||||
UNIMPL();
|
rtlsdr_rpc_dev_t* const dev = devp;
|
||||||
return -1;
|
rtlsdr_rpc_cli_t* const cli = dev->cli;
|
||||||
|
rtlsdr_rpc_msg_t* const q = &cli->query;
|
||||||
|
rtlsdr_rpc_msg_t* const r = &cli->reply;
|
||||||
|
int err = -1;
|
||||||
|
|
||||||
|
rtlsdr_rpc_msg_reset(q);
|
||||||
|
rtlsdr_rpc_msg_set_op(q, RTLSDR_RPC_OP_SET_TUNER_GAIN);
|
||||||
|
if (rtlsdr_rpc_msg_push_uint32(q, dev->index)) goto on_error;
|
||||||
|
if (rtlsdr_rpc_msg_push_uint32(q, (uint32_t)gain)) goto on_error;
|
||||||
|
|
||||||
|
if (send_recv_msg(cli, q, r)) goto on_error;
|
||||||
|
|
||||||
|
err = rtlsdr_rpc_msg_get_err(r);
|
||||||
|
if (err) goto on_error;
|
||||||
|
|
||||||
|
on_error:
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rtlsdr_rpc_get_tuner_gain(void* dev)
|
int rtlsdr_rpc_get_tuner_gain(void* devp)
|
||||||
{
|
{
|
||||||
UNIMPL();
|
rtlsdr_rpc_dev_t* const dev = devp;
|
||||||
return -1;
|
rtlsdr_rpc_cli_t* const cli = dev->cli;
|
||||||
|
rtlsdr_rpc_msg_t* const q = &cli->query;
|
||||||
|
rtlsdr_rpc_msg_t* const r = &cli->reply;
|
||||||
|
int err = -1;
|
||||||
|
|
||||||
|
rtlsdr_rpc_msg_reset(q);
|
||||||
|
rtlsdr_rpc_msg_set_op(q, RTLSDR_RPC_OP_GET_TUNER_GAIN);
|
||||||
|
if (rtlsdr_rpc_msg_push_uint32(q, dev->index)) goto on_error;
|
||||||
|
|
||||||
|
if (send_recv_msg(cli, q, r)) goto on_error;
|
||||||
|
|
||||||
|
err = rtlsdr_rpc_msg_get_err(r);
|
||||||
|
|
||||||
|
on_error:
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rtlsdr_rpc_set_tuner_if_gain(void* dev, int stage, int gain)
|
int rtlsdr_rpc_set_tuner_if_gain(void* devp, int stage, int gain)
|
||||||
{
|
{
|
||||||
UNIMPL();
|
rtlsdr_rpc_dev_t* const dev = devp;
|
||||||
return -1;
|
rtlsdr_rpc_cli_t* const cli = dev->cli;
|
||||||
|
rtlsdr_rpc_msg_t* const q = &cli->query;
|
||||||
|
rtlsdr_rpc_msg_t* const r = &cli->reply;
|
||||||
|
int err = -1;
|
||||||
|
|
||||||
|
rtlsdr_rpc_msg_reset(q);
|
||||||
|
rtlsdr_rpc_msg_set_op(q, RTLSDR_RPC_OP_SET_TUNER_IF_GAIN);
|
||||||
|
if (rtlsdr_rpc_msg_push_uint32(q, dev->index)) goto on_error;
|
||||||
|
if (rtlsdr_rpc_msg_push_uint32(q, (uint32_t)stage)) goto on_error;
|
||||||
|
if (rtlsdr_rpc_msg_push_uint32(q, (uint32_t)gain)) goto on_error;
|
||||||
|
|
||||||
|
if (send_recv_msg(cli, q, r)) goto on_error;
|
||||||
|
|
||||||
|
err = rtlsdr_rpc_msg_get_err(r);
|
||||||
|
if (err) goto on_error;
|
||||||
|
|
||||||
|
on_error:
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rtlsdr_rpc_set_tuner_gain_mode(void* devp, int manual)
|
int rtlsdr_rpc_set_tuner_gain_mode(void* devp, int manual)
|
||||||
|
|
Loading…
Reference in New Issue