- //sr_err("receive Data0\n");
-
-
- const struct sr_dev_inst *sdi;
- struct ipdbg_org_la_dev_context *devc;
-
-
-
- (void)fd;
- (void)revents;
-
- sdi = (const struct sr_dev_inst *)cb_data;
- if (!sdi)
- {
- return FALSE;
- }
- //sr_err("receive Data1\n");
-
- if (!(devc = sdi->priv))
- {
- return FALSE;
-
- }
- //sr_err("receive Data2\n");
-
-
- struct ipdbg_org_la_tcp *tcp = sdi->conn;
- struct sr_datafeed_packet packet;
- struct sr_datafeed_logic logic;
-
-
-
- /*sr_warn("---");
- if (devc->num_transfers == 0 && revents == 0)
- { //
- sr_warn("warten auf Eingangsdaten");
- // Ignore timeouts as long as we haven't received anything
- return TRUE;
- }*/
-
- if (!devc->raw_sample_buf)
- {
- //sr_warn("allocating buffer");
- devc->raw_sample_buf = g_try_malloc(devc->limit_samples*devc->DATA_WIDTH_BYTES);
-
- if (!devc->raw_sample_buf) {
- sr_warn("Sample buffer malloc failed.");
- return FALSE;
- }
-
- }
-
-
- if (devc->num_transfers < devc->limit_samples_max*devc->DATA_WIDTH_BYTES)
- {
- //sr_err("1");
- unsigned char byte;
-
-
- if (ipdbg_org_la_tcp_receive(tcp, &byte, 1) == 1)
- {
- if(devc->num_transfers < devc->limit_samples*devc->DATA_WIDTH_BYTES)
- devc->raw_sample_buf[devc->num_transfers] = byte;
- devc->num_transfers++;
- }
-
- }
- else
- {
- //sr_err("Received %d bytes", devc->num_transfers);
-
- //sr_dbg("Received %d bytes.", devc->num_transfers);
-
- if (devc->delay_value > 0) {
- /* There are pre-trigger samples, send those first. */
- packet.type = SR_DF_LOGIC;
- packet.payload = &logic;
- //logic.length = devc->delay_value-1;
- logic.length = devc->delay_value*devc->DATA_WIDTH_BYTES;
- logic.unitsize = devc->DATA_WIDTH_BYTES;
- logic.data = devc->raw_sample_buf;
- sr_session_send(cb_data, &packet);
- }
-
- /* Send the trigger. */
- packet.type = SR_DF_TRIGGER;
- sr_session_send(cb_data, &packet);
-
- /* Send post-trigger samples. */
- packet.type = SR_DF_LOGIC;
- packet.payload = &logic;
- //logic.length = devc->limit_samples - devc->delay_value+1;
- logic.length = (devc->limit_samples - devc->delay_value)*devc->DATA_WIDTH_BYTES;
- logic.unitsize = devc->DATA_WIDTH_BYTES;
- logic.data = devc->raw_sample_buf + devc->delay_value*devc->DATA_WIDTH_BYTES;
- //logic.data = devc->raw_sample_buf + devc->delay_value-1;
- sr_session_send(cb_data, &packet);
-
- g_free(devc->raw_sample_buf);
- devc->raw_sample_buf = NULL;
-
- //serial_flush(serial);
- ipdbg_org_la_abort_acquisition(sdi);//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- }
-
- return TRUE;
+ const struct sr_dev_inst *sdi;
+ struct ipdbg_org_la_dev_context *devc;
+
+ (void)fd;
+ (void)revents;
+
+ sdi = (const struct sr_dev_inst *)cb_data;
+ if (!sdi)
+ return FALSE;
+
+ if (!(devc = sdi->priv))
+ return FALSE;
+
+ struct ipdbg_org_la_tcp *tcp = sdi->conn;
+ struct sr_datafeed_packet packet;
+ struct sr_datafeed_logic logic;
+
+ if (!devc->raw_sample_buf) {
+ devc->raw_sample_buf =
+ g_try_malloc(devc->limit_samples * devc->DATA_WIDTH_BYTES);
+ if (!devc->raw_sample_buf) {
+ sr_warn("Sample buffer malloc failed.");
+ return FALSE;
+ }
+ }
+
+ if (devc->num_transfers <
+ (devc->limit_samples_max * devc->DATA_WIDTH_BYTES)) {
+ uint8_t byte;
+
+ if (ipdbg_org_la_tcp_receive(tcp, &byte) == 1) {
+ if (devc->num_transfers <
+ (devc->limit_samples * devc->DATA_WIDTH_BYTES))
+ devc->raw_sample_buf[devc->num_transfers] = byte;
+
+ devc->num_transfers++;
+ }
+ } else {
+ if (devc->delay_value > 0) {
+ /* There are pre-trigger samples, send those first. */
+ packet.type = SR_DF_LOGIC;
+ packet.payload = &logic;
+ logic.length = devc->delay_value * devc->DATA_WIDTH_BYTES;
+ logic.unitsize = devc->DATA_WIDTH_BYTES;
+ logic.data = devc->raw_sample_buf;
+ sr_session_send(cb_data, &packet);
+ }
+
+ /* Send the trigger. */
+ packet.type = SR_DF_TRIGGER;
+ sr_session_send(cb_data, &packet);
+
+ /* Send post-trigger samples. */
+ packet.type = SR_DF_LOGIC;
+ packet.payload = &logic;
+ logic.length = (devc->limit_samples - devc->delay_value) *
+ devc->DATA_WIDTH_BYTES;
+ logic.unitsize = devc->DATA_WIDTH_BYTES;
+ logic.data = devc->raw_sample_buf +
+ (devc->delay_value * devc->DATA_WIDTH_BYTES);
+ sr_session_send(cb_data, &packet);
+
+ g_free(devc->raw_sample_buf);
+ devc->raw_sample_buf = NULL;
+
+ ipdbg_org_la_abort_acquisition(sdi);
+ }
+
+ return TRUE;