Exemple #1
0
void espParse(void){
	u08 Len = FIFO_FRONT(espRxBuf);
	u08* ptrData = malloc(Len);
	
	if (ptrData == NULL)										//Не хватило памяти для обработки команды, подождем может появится
		SetTask(espParse);
	else{
		u08* Data = ptrData;
		FIFO_POP(espRxBuf);
		for(u08 i=Len;i;i--){									//Извлекаем данные из буфера
			*Data = FIFO_FRONT(espRxBuf);
			Data++;
			FIFO_POP(espRxBuf);
		}
		u08 Cmd = FIFO_FRONT(espRxBuf);
		FIFO_POP(espRxBuf);
		for (u08 i=0; i < UART_CMD_NUM_MAX; i++) {
			if (espCmdCode(i) == ClkCmdCode(Cmd)){				//Команда найдена
				((VOID_CLK_UART_CMD)&espCmdExec(i))(Cmd, ptrData, Len);//Отрабатываем
				break;
			}
		}
		free(ptrData);
	}
}
Exemple #2
0
PR_END_EXTERN_C


/***********************
*  Р Е А Л И З А Ц И Я
*  ~~~~~~~~~~~~~~~~~~~
************************/


uint8_t CConsole::GetChar() {

    uint8_t ret = 0;

    __disable_interrupt();

    if ( !FIFO_IS_EMPTY( uart_rx_fifo ) ) {

        // Если в буфере есть данные, то извлекаем их.
        ret = FIFO_FRONT( uart_rx_fifo );

        FIFO_POP( uart_rx_fifo );

    }

    __enable_interrupt();

    return ret;

}
Exemple #3
0
uint16_t get_pitch_event(void) {
	if (FIFO_COUNT(pitch_events) != 0) {
		uint16_t event = FIFO_FRONT(pitch_events);
		FIFO_POP(pitch_events);
		return event + 1;
	} else {
		return 0;
	}
}
Exemple #4
0
uint16_t get_slider_event(void) {
	if (FIFO_COUNT(sliders_events) != 0) {
		uint16_t event = FIFO_FRONT(sliders_events);
		FIFO_POP(sliders_events);
		//event maybe = 0, so this is for correct sending
		return event + 1;
	} else {
		return 0;
	}
}
void usb_midi_refresh(void){
	uint32_t buf[128];
	uint8_t count=FIFO_COUNT(USB_midi_packets_in);
	if (count && USB_transferPossible){
	    for (uint8_t i=0; i<count; i++){
	    	buf[i]=FIFO_FRONT(USB_midi_packets_in);
	    	FIFO_POP(USB_midi_packets_in);
	    }
		DCD_EP_Tx(&USB_OTG_dev, MIDI_IN_EP, (uint8_t*)buf, count<<2);
	}
}
Exemple #6
0
void checkButtons_events(Button_type* buttons, uint8_t analog) {
	uint8_t event;

	if (FIFO_COUNT(control_events) == 0)
		return; //No events

	event = FIFO_FRONT(control_events);
	FIFO_POP(control_events);

	uint8_t btn_num = event & 0x7F;

	//messages has number > ENCODER_LEFT1
	//so messages sends to menu_btns_n_msg_handler
	if (btn_num == BUTTON_PANIC) {
		if (!(event & 0x80))
			sendPanic(analog);
	} else if (btn_num <= BUTTON_RIGHT || btn_num >= ENCODER_LEFT1 || buttonsToMenu) {
		if (!(event & 0x80))
		   menu_btns_n_msg_handler(event);
	} else {
		button_midi_send(event, buttons, analog);
	}
}