- trigger_offset = 0;
- if (trigger_stage >= 0) {
- for (i = 0; i < cur_buflen; i++) {
- if ((cur_buf[i] & trigger_mask[trigger_stage])
- == trigger_value[trigger_stage]) {
- /* Match on this trigger stage. */
- trigger_buffer[trigger_stage] =
- cur_buf[i];
- trigger_stage++;
- if (trigger_stage == NUM_TRIGGER_STAGES
- || trigger_mask[trigger_stage] == 0) {
- /* Match on all trigger stages, we're done */
- trigger_offset = i + 1;
-
- /* TODO: Send pre-trigger buffer to session bus. Tell the frontend we hit the trigger here. */
- packet.type = DF_TRIGGER;
- packet.length = 0;
- session_bus(user_data, &packet);
-
- /* Send the samples that triggered it, since we're skipping past them. */
- packet.type = DF_LOGIC8;
- packet.length = trigger_stage;
- packet.payload = trigger_buffer;
- session_bus(user_data, &packet);
- break;
-
- trigger_stage = TRIGGER_FIRED;
- }
- } else if (trigger_stage > 0) {