<commit_before>#if defined(NO_BOARD_LIB)
#include "chip.h"
#else
#include "board.h"
#endif

#include "delay.h"
#include "grafico.h"
#include "320240.h"
#include "pwm.h"

/* elegimos el TIMER a usar */
#define _LPC_TIMER         LPC_TIMER0
#define _TIMER_IRQn        TIMER0_IRQn
#define _SYSCTL_PCLK_TIMER SYSCTL_PCLK_TIMER0
#define _TIMER_IRQHandler  TIMER0_IRQHandler

/* bits del P0 para las columnas */
#define bCOL1 2
#define bCOL2 21
#define bCOL3 24
#define bCOL4 25
/* bits del P0 para las filas */
#define bFILA1 9
#define bFILA2 8
#define bFILA3 7
#define bFILA4 6

/* defines para sacar la fila/columna de un número */
#define GETCOL1(num) (num & (1<<bCOL1))
#define GETCOL2(num) (num & (1<<bCOL2))
#define GETCOL3(num) (num & (1<<bCOL3))
#define GETCOL4(num) (num & (1<<bCOL4))
#define GETFILA1(num) (num & (1<<bFILA1))
#define GETFILA2(num) (num & (1<<bFILA2))
#define GETFILA3(num) (num & (1<<bFILA3))
#define GETFILA4(num) (num & (1<<bFILA4))

/* defines para manejar las filas */
#define SET_FILA1(value) Chip_GPIO_SetPinState(LPC_GPIO, 0, bFILA1, value)
#define SET_FILA2(value) Chip_GPIO_SetPinState(LPC_GPIO, 0, bFILA2, value)
#define SET_FILA3(value) Chip_GPIO_SetPinState(LPC_GPIO, 0, bFILA3, value)
#define SET_FILA4(value) Chip_GPIO_SetPinState(LPC_GPIO, 0, bFILA4, value)

/* defines para leer las filas/columnas */
#define FILA1 GETFILA1(Chip_GPIO_GetPortValue(LPC_GPIO, 0))
#define FILA2 GETFILA2(Chip_GPIO_GetPortValue(LPC_GPIO, 0))
#define FILA3 GETFILA3(Chip_GPIO_GetPortValue(LPC_GPIO, 0))
#define FILA4 GETFILA4(Chip_GPIO_GetPortValue(LPC_GPIO, 0))
#define COL1  GETCOL1(Chip_GPIO_GetPortValue(LPC_GPIO, 0))
#define COL2  GETCOL2(Chip_GPIO_GetPortValue(LPC_GPIO, 0))
#define COL3  GETCOL3(Chip_GPIO_GetPortValue(LPC_GPIO, 0))
#define COL4  GETCOL4(Chip_GPIO_GetPortValue(LPC_GPIO, 0))

typedef struct {
	uint32_t dato;
	uint32_t dato_ingresado;
} HORNO_TECLADO_T;

static HORNO_TECLADO_T horno_keypad = { 0, 0 };
static uint32_t counter;
static bool A_status=false;

void TECLA1_Handler(void) {
	DEBUGOUT("1");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 1;
}

void TECLA2_Handler(void) {
	DEBUGOUT("2");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 2;
}

void TECLA3_Handler(void) {
	DEBUGOUT("3");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 3;
}

void TECLA4_Handler(void) {
	DEBUGOUT("4");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 4;
}

void TECLA5_Handler(void) {
	DEBUGOUT("5");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 5;
}

void TECLA6_Handler(void) {
	DEBUGOUT("6");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 6;
}

void TECLA7_Handler(void) {
	DEBUGOUT("7");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 7;
}

void TECLA8_Handler(void) {
	DEBUGOUT("8");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 8;
}

void TECLA9_Handler(void) {
	DEBUGOUT("9");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 9;
}

void TECLA0_Handler(void) {
	DEBUGOUT("0");
	horno_keypad.dato *= 10;
}

/* funcion temporal, debería ir a otra parte */
void estado_pwm(void) {
	DEBUGOUT("\n"
			"PWM %s\n"
			"PWM ciclo de trabajo: %.2f %\n"
			"PWM periodo: %d ms\n",
			horno_pwm.activo ? "ACTIVO" : "INACTIVO",
			horno_pwm.dc*100, horno_pwm.periodo);
}

void TECLAA_Handler(void) {
	if (A_status==false){
		DEBUGOUT("A - inicio PWM\n");
		Horno_pwm_ciclo(horno_pwm.dc);
		Horno_pwm_inicio();
		estado_pwm();
		Horno_grafico_pwm_encendido(horno_pwm.activo);
		A_status=true;
	}
	else if (A_status==true){
		DEBUGOUT("B - parar PWM\n");
		Horno_pwm_parar();
		estado_pwm(); // el estado lo reporta mal porque en realidad se apaga en la
					  // siguiente interrupción
		Horno_grafico_pwm_encendido(horno_pwm.activo);
		A_status=false;
	}
}

void TECLAB_Handler(void) {

}

void TECLAC_Handler(void) {
	DEBUGOUT("C - ciclo de trabajo\n");
	Horno_pwm_ciclo((float)(horno_keypad.dato_ingresado)/100.0);
	estado_pwm();
	Horno_grafico_pwm_ciclo(horno_pwm.dc);
}

void TECLAD_Handler(void) {
	DEBUGOUT("D - periodo\n");
	Horno_pwm_periodo(horno_keypad.dato_ingresado);
	estado_pwm();
	Horno_grafico_pwm_periodo(horno_pwm.periodo);
}

/* tecla asterisco */
void TECLAE_Handler(void) {
	DEBUGOUT("\b"); /* \b -> backspace */
	horno_keypad.dato /= 10;
}

/* tecla numeral */
void TECLAF_Handler(void) {
	DEBUGOUT("\n");
	horno_keypad.dato_ingresado = horno_keypad.dato;
	horno_keypad.dato = 0;
	DEBUGOUT("dato ingresado: %d\n", horno_keypad.dato_ingresado);
}<commit_msg>Quitada la condición del if Adoptada la sugerencia de elián, usar horno_pwm.activo como condición.<commit_after>#if defined(NO_BOARD_LIB)
#include "chip.h"
#else
#include "board.h"
#endif

#include "delay.h"
#include "grafico.h"
#include "320240.h"
#include "pwm.h"

/* elegimos el TIMER a usar */
#define _LPC_TIMER         LPC_TIMER0
#define _TIMER_IRQn        TIMER0_IRQn
#define _SYSCTL_PCLK_TIMER SYSCTL_PCLK_TIMER0
#define _TIMER_IRQHandler  TIMER0_IRQHandler

/* bits del P0 para las columnas */
#define bCOL1 2
#define bCOL2 21
#define bCOL3 24
#define bCOL4 25
/* bits del P0 para las filas */
#define bFILA1 9
#define bFILA2 8
#define bFILA3 7
#define bFILA4 6

/* defines para sacar la fila/columna de un número */
#define GETCOL1(num) (num & (1<<bCOL1))
#define GETCOL2(num) (num & (1<<bCOL2))
#define GETCOL3(num) (num & (1<<bCOL3))
#define GETCOL4(num) (num & (1<<bCOL4))
#define GETFILA1(num) (num & (1<<bFILA1))
#define GETFILA2(num) (num & (1<<bFILA2))
#define GETFILA3(num) (num & (1<<bFILA3))
#define GETFILA4(num) (num & (1<<bFILA4))

/* defines para manejar las filas */
#define SET_FILA1(value) Chip_GPIO_SetPinState(LPC_GPIO, 0, bFILA1, value)
#define SET_FILA2(value) Chip_GPIO_SetPinState(LPC_GPIO, 0, bFILA2, value)
#define SET_FILA3(value) Chip_GPIO_SetPinState(LPC_GPIO, 0, bFILA3, value)
#define SET_FILA4(value) Chip_GPIO_SetPinState(LPC_GPIO, 0, bFILA4, value)

/* defines para leer las filas/columnas */
#define FILA1 GETFILA1(Chip_GPIO_GetPortValue(LPC_GPIO, 0))
#define FILA2 GETFILA2(Chip_GPIO_GetPortValue(LPC_GPIO, 0))
#define FILA3 GETFILA3(Chip_GPIO_GetPortValue(LPC_GPIO, 0))
#define FILA4 GETFILA4(Chip_GPIO_GetPortValue(LPC_GPIO, 0))
#define COL1  GETCOL1(Chip_GPIO_GetPortValue(LPC_GPIO, 0))
#define COL2  GETCOL2(Chip_GPIO_GetPortValue(LPC_GPIO, 0))
#define COL3  GETCOL3(Chip_GPIO_GetPortValue(LPC_GPIO, 0))
#define COL4  GETCOL4(Chip_GPIO_GetPortValue(LPC_GPIO, 0))

typedef struct {
	uint32_t dato;
	uint32_t dato_ingresado;
} HORNO_TECLADO_T;

static HORNO_TECLADO_T horno_keypad = { 0, 0 };
static uint32_t counter;

void TECLA1_Handler(void) {
	DEBUGOUT("1");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 1;
}

void TECLA2_Handler(void) {
	DEBUGOUT("2");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 2;
}

void TECLA3_Handler(void) {
	DEBUGOUT("3");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 3;
}

void TECLA4_Handler(void) {
	DEBUGOUT("4");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 4;
}

void TECLA5_Handler(void) {
	DEBUGOUT("5");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 5;
}

void TECLA6_Handler(void) {
	DEBUGOUT("6");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 6;
}

void TECLA7_Handler(void) {
	DEBUGOUT("7");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 7;
}

void TECLA8_Handler(void) {
	DEBUGOUT("8");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 8;
}

void TECLA9_Handler(void) {
	DEBUGOUT("9");
	horno_keypad.dato *= 10;
	horno_keypad.dato += 9;
}

void TECLA0_Handler(void) {
	DEBUGOUT("0");
	horno_keypad.dato *= 10;
}

/* funcion temporal, debería ir a otra parte */
void estado_pwm(void) {
	DEBUGOUT("\n"
			"PWM %s\n"
			"PWM ciclo de trabajo: %.2f %\n"
			"PWM periodo: %d ms\n",
			horno_pwm.activo ? "ACTIVO" : "INACTIVO",
			horno_pwm.dc*100, horno_pwm.periodo);
}

void TECLAA_Handler(void) {
	if (horno_pwm.activo==false){
		DEBUGOUT("A - inicio PWM\n");
		Horno_pwm_ciclo(horno_pwm.dc);
		Horno_pwm_inicio();
		estado_pwm();
		Horno_grafico_pwm_encendido(horno_pwm.activo);
	}
	else {
		DEBUGOUT("B - parar PWM\n");
		Horno_pwm_parar();
		estado_pwm(); // el estado lo reporta mal porque en realidad se apaga en la
					  // siguiente interrupción
		Horno_grafico_pwm_encendido(horno_pwm.activo);
	}
}

void TECLAB_Handler(void) {
}

void TECLAC_Handler(void) {
	DEBUGOUT("C - ciclo de trabajo\n");
	Horno_pwm_ciclo((float)(horno_keypad.dato_ingresado)/100.0);
	estado_pwm();
	Horno_grafico_pwm_ciclo(horno_pwm.dc);
}

void TECLAD_Handler(void) {
	DEBUGOUT("D - periodo\n");
	Horno_pwm_periodo(horno_keypad.dato_ingresado);
	estado_pwm();
	Horno_grafico_pwm_periodo(horno_pwm.periodo);
}

/* tecla asterisco */
void TECLAE_Handler(void) {
	DEBUGOUT("\b"); /* \b -> backspace */
	horno_keypad.dato /= 10;
}

/* tecla numeral */
void TECLAF_Handler(void) {
	DEBUGOUT("\n");
	horno_keypad.dato_ingresado = horno_keypad.dato;
	horno_keypad.dato = 0;
	DEBUGOUT("dato ingresado: %d\n", horno_keypad.dato_ingresado);
}
{'fraction_non_alphanumeric': 0.14081956078786506, 'fraction_numerical': 0.035997283223907627, 'mean_word_length': 5.374458874458875, 'pattern_counts': {'":': 0, '<': 35, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '94881', 'n_tokens_mistral': 4291, 'n_tokens_neox': 3990, 'n_words': 734}