X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Flascar-el-usb%2Fprotocol.c;h=eac2b18a001218c2135493d73e351942a0efdd55;hb=145d794facd93b182e6c85d7613ce2e6d9a66d48;hp=7459a1f183f8a056888aec197129ff6cc2dbb2aa;hpb=aed4ad0beaf64062752039a13f9a95326aa1df87;p=libsigrok.git diff --git a/src/hardware/lascar-el-usb/protocol.c b/src/hardware/lascar-el-usb/protocol.c index 7459a1f1..eac2b18a 100644 --- a/src/hardware/lascar-el-usb/protocol.c +++ b/src/hardware/lascar-el-usb/protocol.c @@ -27,7 +27,7 @@ #include "protocol.h" extern struct sr_dev_driver lascar_el_usb_driver_info; -static struct sr_dev_driver *di = &lascar_el_usb_driver_info; +struct sr_dev_driver *di = &lascar_el_usb_driver_info; static const struct elusb_profile profiles[] = { { 1, "EL-USB-1", LOG_UNSUPPORTED }, @@ -293,7 +293,6 @@ static struct sr_dev_inst *lascar_identify(unsigned char *config) struct dev_context *devc; const struct elusb_profile *profile; struct sr_dev_inst *sdi; - struct sr_channel *ch; int modelid, i; char firmware[5]; @@ -323,31 +322,24 @@ static struct sr_dev_inst *lascar_identify(unsigned char *config) return NULL; } - if (!(sdi = sr_dev_inst_new(SR_ST_INACTIVE, LASCAR_VENDOR, - profile->modelname, firmware))) - return NULL; + sdi = g_malloc0(sizeof(struct sr_dev_inst)); + sdi->status = SR_ST_INACTIVE; + sdi->vendor = g_strdup(LASCAR_VENDOR); + sdi->model = g_strdup(profile->modelname); + sdi->version = g_strdup(firmware); sdi->driver = di; if (profile->logformat == LOG_TEMP_RH) { /* Model this as two channels: temperature and humidity. */ - if (!(ch = sr_channel_new(0, SR_CHANNEL_ANALOG, TRUE, "Temp"))) - return NULL; - sdi->channels = g_slist_append(NULL, ch); - if (!(ch = sr_channel_new(0, SR_CHANNEL_ANALOG, TRUE, "Hum"))) - return NULL; - sdi->channels = g_slist_append(sdi->channels, ch); + sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "Temp"); + sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "Hum"); } else if (profile->logformat == LOG_CO) { - if (!(ch = sr_channel_new(0, SR_CHANNEL_ANALOG, TRUE, "CO"))) - return NULL; - sdi->channels = g_slist_append(NULL, ch); + sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "CO"); } else { - if (!(ch = sr_channel_new(0, SR_CHANNEL_ANALOG, TRUE, "P1"))) - return NULL; - sdi->channels = g_slist_append(NULL, ch); + sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "P1"); } - if (!(devc = g_try_malloc0(sizeof(struct dev_context)))) - return NULL; + devc = g_malloc0(sizeof(struct dev_context)); sdi->priv = devc; devc->profile = profile; }