ols: Always use glib's memory allocation functions.
This commit is contained in:
parent
ecad043fd0
commit
c0a4b9716d
|
@ -46,7 +46,6 @@
|
||||||
#define O_NONBLOCK FIONBIO
|
#define O_NONBLOCK FIONBIO
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static int capabilities[] = {
|
static int capabilities[] = {
|
||||||
SR_HWCAP_LOGIC_ANALYZER,
|
SR_HWCAP_LOGIC_ANALYZER,
|
||||||
SR_HWCAP_SAMPLERATE,
|
SR_HWCAP_SAMPLERATE,
|
||||||
|
@ -66,8 +65,6 @@ static struct sr_samplerates samplerates = {
|
||||||
/* List of struct sr_serial_device_instance */
|
/* List of struct sr_serial_device_instance */
|
||||||
static GSList *device_instances = NULL;
|
static GSList *device_instances = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int send_shortcommand(int fd, uint8_t command)
|
static int send_shortcommand(int fd, uint8_t command)
|
||||||
{
|
{
|
||||||
char buf[1];
|
char buf[1];
|
||||||
|
@ -174,6 +171,7 @@ static struct ols_device *ols_device_new(void)
|
||||||
{
|
{
|
||||||
struct ols_device *ols;
|
struct ols_device *ols;
|
||||||
|
|
||||||
|
/* TODO: Is 'ols' ever g_free()'d? */
|
||||||
if (!(ols = g_try_malloc0(sizeof(struct ols_device)))) {
|
if (!(ols = g_try_malloc0(sizeof(struct ols_device)))) {
|
||||||
sr_err("ols: %s: ols malloc failed", __func__);
|
sr_err("ols: %s: ols malloc failed", __func__);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -311,7 +309,6 @@ static struct sr_device_instance *get_metadata(int fd)
|
||||||
return sdi;
|
return sdi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int hw_init(const char *deviceinfo)
|
static int hw_init(const char *deviceinfo)
|
||||||
{
|
{
|
||||||
struct sr_device_instance *sdi;
|
struct sr_device_instance *sdi;
|
||||||
|
@ -321,6 +318,8 @@ static int hw_init(const char *deviceinfo)
|
||||||
int devcnt, final_devcnt, num_ports, fd, ret, i;
|
int devcnt, final_devcnt, num_ports, fd, ret, i;
|
||||||
char buf[8], **device_names, **serial_params;
|
char buf[8], **device_names, **serial_params;
|
||||||
|
|
||||||
|
final_devcnt = 0;
|
||||||
|
|
||||||
if (deviceinfo)
|
if (deviceinfo)
|
||||||
ports = g_slist_append(NULL, strdup(deviceinfo));
|
ports = g_slist_append(NULL, strdup(deviceinfo));
|
||||||
else
|
else
|
||||||
|
@ -328,9 +327,22 @@ static int hw_init(const char *deviceinfo)
|
||||||
ports = list_serial_ports();
|
ports = list_serial_ports();
|
||||||
|
|
||||||
num_ports = g_slist_length(ports);
|
num_ports = g_slist_length(ports);
|
||||||
fds = calloc(1, num_ports * sizeof(GPollFD));
|
|
||||||
device_names = malloc(num_ports * sizeof(char *));
|
if (!(fds = g_try_malloc0(num_ports * sizeof(GPollFD)))) {
|
||||||
serial_params = malloc(num_ports * sizeof(char *));
|
sr_err("ols: %s: fds malloc failed", __func__);
|
||||||
|
goto hw_init_free_ports; /* TODO: SR_ERR_MALLOC. */
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(device_names = g_try_malloc(num_ports * sizeof(char *)))) {
|
||||||
|
sr_err("ols: %s: device_names malloc failed", __func__);
|
||||||
|
goto hw_init_free_fds; /* TODO: SR_ERR_MALLOC. */
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(serial_params = g_try_malloc(num_ports * sizeof(char *)))) {
|
||||||
|
sr_err("ols: %s: serial_params malloc failed", __func__);
|
||||||
|
goto hw_init_free_device_names; /* TODO: SR_ERR_MALLOC. */
|
||||||
|
}
|
||||||
|
|
||||||
devcnt = 0;
|
devcnt = 0;
|
||||||
for (l = ports; l; l = l->next) {
|
for (l = ports; l; l = l->next) {
|
||||||
/* The discovery procedure is like this: first send the Reset
|
/* The discovery procedure is like this: first send the Reset
|
||||||
|
@ -374,7 +386,6 @@ static int hw_init(const char *deviceinfo)
|
||||||
/* 2ms isn't enough for reliable transfer with pl2303, let's try 10 */
|
/* 2ms isn't enough for reliable transfer with pl2303, let's try 10 */
|
||||||
usleep(10000);
|
usleep(10000);
|
||||||
|
|
||||||
final_devcnt = 0;
|
|
||||||
g_poll(fds, devcnt, 1);
|
g_poll(fds, devcnt, 1);
|
||||||
|
|
||||||
for (i = 0; i < devcnt; i++) {
|
for (i = 0; i < devcnt; i++) {
|
||||||
|
@ -408,7 +419,6 @@ static int hw_init(const char *deviceinfo)
|
||||||
final_devcnt++;
|
final_devcnt++;
|
||||||
serial_close(fds[i].fd);
|
serial_close(fds[i].fd);
|
||||||
fds[i].fd = 0;
|
fds[i].fd = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* clean up after all the probing */
|
/* clean up after all the probing */
|
||||||
|
@ -421,9 +431,13 @@ static int hw_init(const char *deviceinfo)
|
||||||
free(device_names[i]);
|
free(device_names[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(fds);
|
hw_init_free_serial_params:
|
||||||
free(device_names);
|
g_free(serial_params);
|
||||||
free(serial_params);
|
hw_init_free_device_names:
|
||||||
|
g_free(device_names);
|
||||||
|
hw_init_free_fds:
|
||||||
|
g_free(fds);
|
||||||
|
hw_init_free_ports:
|
||||||
g_slist_free(ports);
|
g_slist_free(ports);
|
||||||
|
|
||||||
return final_devcnt;
|
return final_devcnt;
|
||||||
|
@ -623,7 +637,12 @@ static int receive_data(int fd, int revents, void *user_data)
|
||||||
*/
|
*/
|
||||||
sr_source_remove(fd);
|
sr_source_remove(fd);
|
||||||
sr_source_add(fd, G_IO_IN, 30, receive_data, user_data);
|
sr_source_add(fd, G_IO_IN, 30, receive_data, user_data);
|
||||||
ols->raw_sample_buf = malloc(ols->limit_samples * 4);
|
ols->raw_sample_buf = g_try_malloc(ols->limit_samples * 4);
|
||||||
|
if (!ols->raw_sample_buf) {
|
||||||
|
sr_err("ols: %s: ols->raw_sample_buf malloc failed",
|
||||||
|
__func__);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
/* fill with 1010... for debugging */
|
/* fill with 1010... for debugging */
|
||||||
memset(ols->raw_sample_buf, 0x82, ols->limit_samples * 4);
|
memset(ols->raw_sample_buf, 0x82, ols->limit_samples * 4);
|
||||||
}
|
}
|
||||||
|
@ -758,7 +777,7 @@ static int receive_data(int fd, int revents, void *user_data)
|
||||||
packet.payload = ols->raw_sample_buf;
|
packet.payload = ols->raw_sample_buf;
|
||||||
sr_session_bus(user_data, &packet);
|
sr_session_bus(user_data, &packet);
|
||||||
}
|
}
|
||||||
free(ols->raw_sample_buf);
|
g_free(ols->raw_sample_buf);
|
||||||
|
|
||||||
serial_flush(fd);
|
serial_flush(fd);
|
||||||
serial_close(fd);
|
serial_close(fd);
|
||||||
|
@ -784,6 +803,7 @@ static int hw_start_acquisition(int device_index, gpointer session_device_id)
|
||||||
|
|
||||||
if (!(sdi = sr_get_device_instance(device_instances, device_index)))
|
if (!(sdi = sr_get_device_instance(device_instances, device_index)))
|
||||||
return SR_ERR;
|
return SR_ERR;
|
||||||
|
|
||||||
ols = sdi->priv;
|
ols = sdi->priv;
|
||||||
|
|
||||||
if (sdi->status != SR_ST_ACTIVE)
|
if (sdi->status != SR_ST_ACTIVE)
|
||||||
|
@ -893,6 +913,7 @@ static int hw_start_acquisition(int device_index, gpointer session_device_id)
|
||||||
|
|
||||||
if (!(header = g_try_malloc(sizeof(struct sr_datafeed_header)))) {
|
if (!(header = g_try_malloc(sizeof(struct sr_datafeed_header)))) {
|
||||||
sr_err("ols: %s: header malloc failed", __func__);
|
sr_err("ols: %s: header malloc failed", __func__);
|
||||||
|
g_free(packet);
|
||||||
return SR_ERR_MALLOC;
|
return SR_ERR_MALLOC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -907,6 +928,7 @@ static int hw_start_acquisition(int device_index, gpointer session_device_id)
|
||||||
header->num_logic_probes = NUM_PROBES;
|
header->num_logic_probes = NUM_PROBES;
|
||||||
header->num_analog_probes = 0;
|
header->num_analog_probes = 0;
|
||||||
sr_session_bus(session_device_id, packet);
|
sr_session_bus(session_device_id, packet);
|
||||||
|
|
||||||
g_free(header);
|
g_free(header);
|
||||||
g_free(packet);
|
g_free(packet);
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef OLS_H_
|
#ifndef OLS_H_
|
||||||
#define OLS_H_
|
#define OLS_H_
|
||||||
|
|
||||||
|
@ -60,7 +59,6 @@
|
||||||
#define FLAG_CLOCK_INVERTED 0x80
|
#define FLAG_CLOCK_INVERTED 0x80
|
||||||
#define FLAG_RLE 0x0100
|
#define FLAG_RLE 0x0100
|
||||||
|
|
||||||
|
|
||||||
struct ols_device {
|
struct ols_device {
|
||||||
uint32_t max_samplerate;
|
uint32_t max_samplerate;
|
||||||
uint32_t max_samples;
|
uint32_t max_samples;
|
||||||
|
|
Loading…
Reference in New Issue