int main() { #ifdef RTE_Compiler_EventRecorder EventRecorderInitialize (EventRecordAll, 1); // initialize and start Event Recorder #endif printf("Start GRU execution\n"); int input_size = DIM_INPUT; int history_size = DIM_HISTORY; // copy over the input data arm_copy_q15(test_input1, scratch_buffer + history_size, input_size); arm_copy_q15(test_history, scratch_buffer + history_size + input_size, history_size); gru_example(scratch_buffer, input_size, history_size, update_gate_weights, reset_gate_weights, hidden_state_weights, update_gate_bias, reset_gate_bias, hidden_state_bias); printf("Complete first iteration on GRU\n"); arm_copy_q15(test_input2, scratch_buffer + history_size, input_size); gru_example(scratch_buffer, input_size, history_size, update_gate_weights, reset_gate_weights, hidden_state_weights, update_gate_bias, reset_gate_bias, hidden_state_bias); printf("Complete second iteration on GRU\n"); return 0; }
// the core dsp function void dsp(int16_t* buffer, int length) { // only enable the filter if the user button is pressed if (user_mode & 1) { // we initiate the filter only if needed to prevent clitches at the beginning of new buffers if (firstStart == false || old_user_mode != user_mode) { initFilter(); old_user_mode = user_mode; firstStart = true; } // process with FIR arm_fir_fast_q15(&FIR, buffer, outSignal, BLOCKSIZE); // copy the result arm_copy_q15(outSignal, buffer, length); } }