From 7b4848824dcec8c5564bd2b11371f9c5f4a04376 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 23 Aug 2016 01:56:47 +0100 Subject: working --- app/Makefile | 2 +- app/buzzer.c | 150 --------------------------------- app/dialstr.c | 88 ++++++++++++++++++-- app/gpio.c | 74 ++++++++++++++--- app/main.c | 4 +- app/modem.c | 130 +++++++++++++++++++++++++---- app/project.h | 1 + app/prototypes.h | 141 +++++++++++++++---------------- app/ringer.c | 169 ++++++++++++++++++++++++++++++++++++++ app/serial.c | 4 +- app/ticker.c | 2 +- app/usart.c | 4 + doc/BT_SIN_350v1p5.pdf | Bin 0 -> 55872 bytes doc/BT_SIN_351v4p6.pdf | Bin 0 -> 173329 bytes doc/TTP229.pdf | Bin 132234 -> 0 bytes doc/TTP229B-Schematic-Diagram.pdf | Bin 185208 -> 0 bytes 16 files changed, 511 insertions(+), 258 deletions(-) delete mode 100644 app/buzzer.c create mode 100644 app/ringer.c create mode 100644 doc/BT_SIN_350v1p5.pdf create mode 100644 doc/BT_SIN_351v4p6.pdf delete mode 100644 doc/TTP229.pdf delete mode 100644 doc/TTP229B-Schematic-Diagram.pdf diff --git a/app/Makefile b/app/Makefile index 2a0672b..0a076d2 100644 --- a/app/Makefile +++ b/app/Makefile @@ -25,7 +25,7 @@ PROG=candlestick V=1 default: ${PROG}.elf -CSRCS=dfu.c main.c usb.c led.c ticker.c i2c.c lcd.c cdcacm.c usart.c ring.c serial.c gpio.c console.c buzzer.c modem.c dialstr.c +CSRCS=dfu.c main.c usb.c led.c ticker.c i2c.c lcd.c cdcacm.c usart.c ring.c serial.c gpio.c console.c ringer.c modem.c dialstr.c diff --git a/app/buzzer.c b/app/buzzer.c deleted file mode 100644 index d6f1eb2..0000000 --- a/app/buzzer.c +++ /dev/null @@ -1,150 +0,0 @@ -#include "project.h" - -static int period; -static int place; -int ringing; - - -#define C6 1047 -#define E6 1319 - -void -buzzer_on (void) -{ - gpio_set_mode (GPIOA, GPIO_MODE_OUTPUT_2_MHZ, - GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_TIM1_CH1); - gpio_set_mode (GPIOB, GPIO_MODE_OUTPUT_2_MHZ, - GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_TIM1_CH1N); - - timer_reset (TIM1); - - timer_set_mode (TIM1, TIM_CR1_CKD_CK_INT, TIM_CR1_CMS_CENTER_1, - TIM_CR1_DIR_UP); - timer_set_oc_mode (TIM1, TIM_OC1, TIM_OCM_PWM2); - timer_enable_oc_output (TIM1, TIM_OC1); - timer_enable_oc_output (TIM1, TIM_OC1N); - timer_enable_break_main_output (TIM1); - - timer_set_oc_value (TIM1, TIM_OC1, period / 2); - timer_set_period (TIM1, period); - - timer_enable_counter (TIM1); -} - -void -buzzer_off (void) -{ - gpio_set_mode (GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO8); - gpio_clear (GPIOA, GPIO8); - gpio_set_mode (GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO13); - gpio_clear (GPIOB, GPIO13); - timer_disable_counter (TIM1); -} - -void -buzzer_set_freq (int hz) -{ - period = (48000000 / 4) / hz; - timer_set_oc_value (TIM1, TIM_OC1, period / 2); - timer_set_period (TIM1, period); -} - -void -buzzer_init (void) -{ - - /*buzzer */ - buzzer_off (); - buzzer_set_freq (440); - -} - - -void -ring_tick (void) -{ - static int t; - - if (!ringing) - return; - ringing--; - - if (!ringing) - { - place = 0; - buzzer_off (); - return; - } - - - - t++; - if (t < 50) - return; - t = 0; - - - switch (place) - { - case 1: - case 3: - case 5: - case 7: - - case 13: - case 15: - case 17: - case 19: - place++; - buzzer_set_freq (C6); - break; - - case 0: - case 12: - place++; - buzzer_set_freq (E6); - buzzer_on (); - break; - case 2: - case 4: - case 6: - case 14: - case 16: - case 18: - place++; - buzzer_set_freq (E6); - break; - - case 8: - case 20: - place++; - buzzer_off (); - break; - - default: - place++; - break; - case 59: - place = 0; - } - - - - -} - - -void -ring_off (void) -{ - place = 0; - ringing = 0; - buzzer_off (); -} - -void -ring (int l) -{ -//mb(); - ringing = l; -} diff --git a/app/dialstr.c b/app/dialstr.c index 1277a42..26bdfe9 100644 --- a/app/dialstr.c +++ b/app/dialstr.c @@ -11,24 +11,101 @@ dialstr_clear (void) dialstr_ptr = 4; dialstr[dialstr_ptr] = ';'; dialstr[dialstr_ptr + 1] = 0; + dialstr_timeout = 0; } +static void redial(void) +{ + if (in_call) + terminate_call(); + dialstr_timeout = 1; +} + + +static void dialstr_hook(char digit) +{ +switch (digit) { +case '1': + ringer_enable(); + ringer_ring(400); + break; +case '2': + ringer_disable(); + break; +case '0': + for (;;) scb_reset_system(); + break; +} +} + +static void dialstr_call(char digit) +{ +static char cmd[]={'A','T','+','V','T','S','=','"','{','0',',','3','}','"',0}; + +switch (digit) { +case 'R': + redial(); + break; +case 'M': + modem_cmd("AT+CMUT=1"); + break; +case 'U': + modem_cmd("AT+CMUT=0"); + break; +default: + cmd[9]=digit; + modem_cmd(cmd); + break; +} +} + + + void -dialstr_digit (int digit) +dialstr_digit (char digit) { + dialtone_off (); + + printf ("Dialed %c\r\n",digit); + + if (hook) { + dialstr_timeout=0; + dialstr_hook(digit); + return; + } + + if (in_call) { + dialstr_timeout=0; + dialstr_call(digit); + return; + } + + + switch(digit) { + case 'R': + redial(); + break; + + case 'M': + break; + case 'U': + break; + default: + + if (!dialstr_timeout) dialstr_clear (); if (dialstr_ptr >= (sizeof (dialstr) - 2)) - return; + break; - dialstr[dialstr_ptr] = '0' + digit; + dialstr[dialstr_ptr] = digit; dialstr_ptr++; dialstr[dialstr_ptr] = ';'; dialstr[dialstr_ptr + 1] = 0; dialstr_timeout = DIGIT_TIMEOUT; - printf ("Dialstr is now %s\r\n", dialstr + 4); +} } @@ -36,7 +113,8 @@ void dialstr_dial (void) { printf ("Dialing %s\r\n", dialstr + 4); - modem_send (dialstr); + modem_tone(17); + modem_dial (dialstr); } void diff --git a/app/gpio.c b/app/gpio.c index 0419cde..eea5bf0 100644 --- a/app/gpio.c +++ b/app/gpio.c @@ -1,12 +1,15 @@ #include "project.h" #define DEBOUNCE 10 #define DIAL_BLACKOUT 90 /* (10pps) */ +#define L2_THRESHOLD 1500 -static int hs_poll; -int hook; +static int hs_poll=DEBOUNCE; +int hook=1; static int dial_poll; static int dial_pulse_blackout; static int pulse_count; +static int dial_mute_time; + @@ -26,6 +29,10 @@ exti7_isr (void) if (dial_pulse_blackout) return; dial_pulse_blackout = DIAL_BLACKOUT; + + if ((!pulse_count) && (dial_mute_time>L2_THRESHOLD)) + pulse_count=100; + pulse_count++; } @@ -86,15 +93,24 @@ hs_tick (void) { if (ringing) { - ring_off (); + ringer_off (); answer_call (); } + else + { + ringer_off (); + dialstr_clear (); + dialtone_on (); + } } if (hook) { - ring_off (); + ringer_off (); terminate_call (); + dialstr_clear (); + dialtone_off(); + modem_tone_off(); } @@ -106,6 +122,8 @@ dial_tick (void) { int m; + dial_mute_time++; + if (dial_pulse_blackout) dial_pulse_blackout--; if (!dial_poll) @@ -117,13 +135,46 @@ dial_tick (void) m = ! !gpio_get (GPIOA, GPIO5); - if (m) - return; - if (!pulse_count) + if (m) { + dial_mute_time=0; return; - - dialstr_digit ((pulse_count == 10) ? 0 : pulse_count); - pulse_count = 0; + } + + + switch (pulse_count) { + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + dialstr_digit ('0'+pulse_count); + break; + + case 10: + dialstr_digit ('0'); + break; + case 101: + dialstr_digit ('*'); + break; + case 102: + dialstr_digit ('#'); + break; + case 103: + dialstr_digit ('R'); + break; + case 104: + dialstr_digit ('M'); + break; + case 105: + dialstr_digit ('U'); + break; + } + + pulse_count=0; } @@ -133,7 +184,8 @@ void toggle_fake_hook (void) { fake_hook ^= 1; - hs_poll = DEBOUNCE; + hs_poll = 1; +hs_tick(); } void diff --git a/app/main.c b/app/main.c index e225f26..4d84076 100644 --- a/app/main.c +++ b/app/main.c @@ -30,8 +30,10 @@ main (void) led_init (); usart_init (); + printf("Start of day\r\n"); + gpio_init (); - buzzer_init (); + ringer_init (); modem_init (); diff --git a/app/modem.c b/app/modem.c index b531761..170c7ba 100644 --- a/app/modem.c +++ b/app/modem.c @@ -6,19 +6,24 @@ #define SLEEPY 550 #define BACKOFF 200 +#define N_CMDS 4 + static char modem_buf[BUFFER_SIZE]; -static unsigned modem_ptr = 0; -static char *modem_cmd; +static unsigned modem_ptr; +static char *modem_cmds[N_CMDS]; +static int modem_cmds_ptr; static int timeout; static int sleepy = SLEEPY; +int in_call; +int dialtone; void -modem_send (char *buf) +modem_send (void) { - modem_cmd = buf; + if (!modem_cmds_ptr) return; if (sleepy >= SLEEPY) { @@ -30,29 +35,105 @@ modem_send (char *buf) } sleepy = 0; - printf ("(re)send\r\n"); + printf ("(re)send %s\r\n",modem_cmds[0]); timeout = TIMEOUT; usart2_queue ('\r'); - usart2_tx (modem_cmd, strlen (modem_cmd)); + usart2_tx (modem_cmds[0], strlen (modem_cmds[0])); usart2_queue ('\r'); } +void modem_cmd(char *buf) +{ +if (modem_cmds_ptr==N_CMDS) return; + +modem_cmds[modem_cmds_ptr]=buf; +modem_cmds_ptr++; + +if (modem_cmds_ptr==1) modem_send(); + +} + +void modem_dial (char *buf) { +in_call=1; +modem_cmd(buf); +} + + + +void modem_tone_off() +{ +// modem_cmd ("AT+STTONE=0"); +modem_cmd("AT+SIMTONE=1,400,200,0,10"); +} + +void modem_tone(int i) +{ +static char tone[]={'A','T','+','S','T','T','O','N','E','=','1',',','0','0',',','4','5','0','0','0',0}; + +tone[12]='0'+(i/10); +tone[13]='0'+(i%10); + +modem_cmd(tone); +} + +void modem_tone_nu(void) +{ +modem_cmd("AT+SIMTONE=1,400,200,0,45000"); +} + + void modem_line () { + int i; + printf ("Modem said: %s\r\n", modem_buf); sleepy = 0; - if (!strncmp (modem_buf, "RING", 4)) - ring (4000); - - if (!strncmp (modem_buf, "OK", 2)) + if (!strncmp (modem_buf, "RDY", 4)) { - modem_cmd = NULL; + modem_cmd ("ATZ"); + modem_cmd ("AT+CALM=1"); + modem_cmd ("AT+CLVL=90"); + } + else + if (!strncmp (modem_buf, "RING", 4)) + { + dialstr_clear (); + dialtone = 0; + if (!hook) + { + answer_call (); + } + else + { + ringer_ring (4000); + } + } + else + if (!strncmp (modem_buf, "OK", 2) || !strncmp (modem_buf, "ERROR", 2)) + { + if (modem_cmds_ptr) { + + for (i=1;i #include #include +#include #include #include #include diff --git a/app/prototypes.h b/app/prototypes.h index 9fec585..5842d6e 100644 --- a/app/prototypes.h +++ b/app/prototypes.h @@ -1,14 +1,9 @@ /* dfu.c */ extern const struct usb_dfu_descriptor dfu_function; extern const struct usb_interface_descriptor dfu_iface; -extern int dfu_control_request (usbd_device * usbd_dev, - struct usb_setup_data *req, uint8_t ** buf, - uint16_t * len, - int (**complete) (usbd_device * usbd_dev, - struct usb_setup_data * - req)); +extern int dfu_control_request(usbd_device *usbd_dev, struct usb_setup_data *req, uint8_t **buf, uint16_t *len, int (**complete)(usbd_device *usbd_dev, struct usb_setup_data *req)); /* main.c */ -extern int main (void); +extern int main(void); /* usb.c */ extern const struct usb_device_descriptor dev; extern const struct usb_interface ifaces[]; @@ -16,92 +11,90 @@ extern const struct usb_config_descriptor config; extern usbd_device *usbd_dev; extern int usb_is_suspended; extern int usb_running; -extern void usb_tick (void); -extern int usb_wakeup_host (void); -extern int class_control_request (usbd_device * usbd_dev, - struct usb_setup_data *req, uint8_t ** buf, - uint16_t * len, - int (**complete) (usbd_device * usbd_dev, - struct usb_setup_data * - req)); -extern void usb_set_config (usbd_device * usbd_dev, uint16_t wValue); +extern void usb_tick(void); +extern int usb_wakeup_host(void); +extern int class_control_request(usbd_device *usbd_dev, struct usb_setup_data *req, uint8_t **buf, uint16_t *len, int (**complete)(usbd_device *usbd_dev, struct usb_setup_data *req)); +extern void usb_set_config(usbd_device *usbd_dev, uint16_t wValue); extern uint8_t usbd_control_buffer[128]; -extern void usb_init (void); -extern void usb_run (void); +extern void usb_init(void); +extern void usb_run(void); /* led.c */ -extern void led_init (void); -extern void led_tick (void); +extern void led_init(void); +extern void led_tick(void); /* ticker.c */ extern volatile uint32_t ticks; -extern void delay_us (uint32_t d); -extern void sys_tick_handler (void); -extern void delay_ms (uint32_t d); -extern int timed_out (uint32_t then, unsigned int ms); -extern void ticker_init (void); +extern void delay_us(uint32_t d); +extern void sys_tick_handler(void); +extern void delay_ms(uint32_t d); +extern int timed_out(uint32_t then, unsigned int ms); +extern void ticker_init(void); /* i2c.c */ /* lcd.c */ /* cdcacm.c */ extern const struct usb_interface_descriptor comm_iface[]; extern const struct usb_interface_descriptor data_iface[]; -extern int cdcacm_control_request (usbd_device * usbd_dev, - struct usb_setup_data *req, uint8_t ** buf, - uint16_t * len, - int (**complete) (usbd_device * usbd_dev, - struct usb_setup_data * - req)); -extern void cdcacm_data_tx (void *buf, size_t len); -extern void cdcacm_data_rx_cb (usbd_device * usbd_dev, uint8_t ep); +extern int cdcacm_control_request(usbd_device *usbd_dev, struct usb_setup_data *req, uint8_t **buf, uint16_t *len, int (**complete)(usbd_device *usbd_dev, struct usb_setup_data *req)); +extern void cdcacm_data_tx(void *buf, size_t len); +extern void cdcacm_data_rx_cb(usbd_device *usbd_dev, uint8_t ep); /* usart.c */ extern ring_t rx1_ring; extern ring_t tx1_ring; extern ring_t rx2_ring; extern ring_t tx2_ring; -extern void usart1_isr (void); -extern void usart2_isr (void); -extern int _write (int file, char *ptr, int len); -extern int usart1_tx (void *ptr, int len); -extern int usart2_tx (void *buf, size_t len); -extern void usart1_queue (uint8_t d); -extern void usart2_queue (uint8_t d); -extern void usart2_drain (void); -extern void usart1_drain (void); -extern void usart_init (void); +extern void usart1_isr(void); +extern void usart2_isr(void); +extern int _write(int file, char *ptr, int len); +extern int usart1_tx(void *ptr, int len); +extern int usart2_tx(void *buf, size_t len); +extern void usart1_queue(uint8_t d); +extern void usart2_queue(uint8_t d); +extern void usart2_drain(void); +extern void usart1_drain(void); +extern void usart_init(void); /* ring.c */ -extern void ring_init (ring_t * r, uint8_t * buf, size_t len); -extern int ring_write_byte (ring_t * r, uint8_t c); -extern int ring_read_byte (ring_t * r, uint8_t * c); -extern int ring_write (ring_t * r, uint8_t * buf, size_t len); -extern int ring_empty (ring_t * r); +extern void ring_init(ring_t *r, uint8_t *buf, size_t len); +extern int ring_write_byte(ring_t *r, uint8_t c); +extern int ring_read_byte(ring_t *r, uint8_t *c); +extern int ring_write(ring_t *r, uint8_t *buf, size_t len); +extern int ring_empty(ring_t *r); /* serial.c */ -extern void serial_poll (void); +extern void serial_poll(void); /* gpio.c */ extern int hook; -extern void exti9_5_isr (void); -extern void exti15_10_isr (void); -extern void toggle_fake_hook (void); -extern void gpio_tick (void); -extern void gpio_init (void); +extern void exti9_5_isr(void); +extern void exti15_10_isr(void); +extern void toggle_fake_hook(void); +extern void gpio_tick(void); +extern void gpio_init(void); /* console.c */ -extern int console_tx (void *buf, size_t len); -/* buzzer.c */ +extern int console_tx(void *buf, size_t len); +/* ringer.c */ extern int ringing; -extern void buzzer_on (void); -extern void buzzer_off (void); -extern void buzzer_set_freq (int hz); -extern void buzzer_init (void); -extern void ring_tick (void); -extern void ring_off (void); -extern void ring (int l); +extern void ringer_tick(void); +extern void ringer_off(void); +extern void ringer_ring(int l); +extern void ringer_disable(void); +extern void ringer_enable(void); +extern void ringer_init(void); /* modem.c */ -extern void modem_send (char *buf); -extern void modem_line (void); -extern void modem_byte (uint8_t b); -extern void answer_call (void); -extern void terminate_call (void); -extern void modem_tick (void); -extern void modem_init (void); +extern int in_call; +extern int dialtone; +extern void modem_send(void); +extern void modem_cmd(char *buf); +extern void modem_dial(char *buf); +extern void modem_tone_off(void); +extern void modem_tone(int i); +extern void modem_tone_nu(void); +extern void modem_line(void); +extern void modem_byte(uint8_t b); +extern void answer_call(void); +extern void terminate_call(void); +extern void dialtone_on(void); +extern void dialtone_off(void); +extern void modem_tick(void); +extern void modem_init(void); /* dialstr.c */ -extern void dialstr_clear (void); -extern void dialstr_digit (int digit); -extern void dialstr_dial (void); -extern void dialstr_tick (void); +extern void dialstr_clear(void); +extern void dialstr_digit(char digit); +extern void dialstr_dial(void); +extern void dialstr_tick(void); diff --git a/app/ringer.c b/app/ringer.c new file mode 100644 index 0000000..edaad24 --- /dev/null +++ b/app/ringer.c @@ -0,0 +1,169 @@ +#include "project.h" + +static int period; +static int place; +static int ringer_enabled=1; +int ringing; + + +#define C6 1047 +#define E6 1319 + +static void +buzzer_on (void) +{ + gpio_set_mode (GPIOA, GPIO_MODE_OUTPUT_2_MHZ, + GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_TIM1_CH1); + gpio_set_mode (GPIOB, GPIO_MODE_OUTPUT_2_MHZ, + GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_TIM1_CH1N); + + timer_reset (TIM1); + + timer_set_mode (TIM1, TIM_CR1_CKD_CK_INT, TIM_CR1_CMS_CENTER_1, + TIM_CR1_DIR_UP); + timer_set_oc_mode (TIM1, TIM_OC1, TIM_OCM_PWM2); + timer_enable_oc_output (TIM1, TIM_OC1); + timer_enable_oc_output (TIM1, TIM_OC1N); + timer_enable_break_main_output (TIM1); + + timer_set_oc_value (TIM1, TIM_OC1, period / 2); + timer_set_period (TIM1, period); + + timer_enable_counter (TIM1); +} + +static void +buzzer_off (void) +{ + gpio_set_mode (GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO8); + gpio_clear (GPIOA, GPIO8); + gpio_set_mode (GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO13); + gpio_clear (GPIOB, GPIO13); + timer_disable_counter (TIM1); +} + +static void +buzzer_set_freq (int hz) +{ + period = (48000000 / 4) / hz; + timer_set_oc_value (TIM1, TIM_OC1, period / 2); + timer_set_period (TIM1, period); +} + +static void +buzzer_init (void) +{ + + /*buzzer */ + buzzer_off (); + buzzer_set_freq (440); + +} + + +void +ringer_tick (void) +{ + static int t; + + if (!ringing) + return; + ringing--; + + if (!ringing) + { + place = 0; + buzzer_off (); + return; + } + + + + t++; + if (t < 50) + return; + t = 0; + + + switch (place) + { + case 1: + case 3: + case 5: + case 7: + + case 13: + case 15: + case 17: + case 19: + place++; + buzzer_set_freq (C6); + break; + + case 0: + case 12: + place++; + buzzer_set_freq (E6); + buzzer_on (); + break; + case 2: + case 4: + case 6: + case 14: + case 16: + case 18: + place++; + buzzer_set_freq (E6); + break; + + case 8: + case 20: + place++; + buzzer_off (); + break; + + default: + place++; + break; + case 59: + place = 0; + } + + + + +} + +void +ringer_off (void) +{ + place = 0; + ringing = 0; + buzzer_off (); +} + +void +ringer_ring (int l) +{ +//mb(); +if (!ringer_enabled) return; + ringing = l; +} + +void ringer_disable(void) +{ +ringer_enabled=0; +ringer_off(); +} + +void ringer_enable(void) +{ +ringer_enabled=1; +} + + + +void ringer_init(void) +{ +buzzer_init(); +} diff --git a/app/serial.c b/app/serial.c index 27307eb..cabe7f2 100644 --- a/app/serial.c +++ b/app/serial.c @@ -21,7 +21,9 @@ serial_poll (void) else if (v == '#') { toggle_fake_hook (); - modem_send ("ATDT120;"); + dialstr_digit(1); + dialstr_digit(2); + dialstr_digit(0); } else { diff --git a/app/ticker.c b/app/ticker.c index 6341353..e22fc8c 100644 --- a/app/ticker.c +++ b/app/ticker.c @@ -33,7 +33,7 @@ sys_tick_handler (void) #endif gpio_tick (); usb_tick (); - ring_tick (); + ringer_tick (); modem_tick (); dialstr_tick (); diff --git a/app/usart.c b/app/usart.c index f9ea210..0abb5ec 100644 --- a/app/usart.c +++ b/app/usart.c @@ -64,9 +64,11 @@ usart2_isr (void) data = usart_recv (USART2); ring_write_byte (&rx2_ring, data); +#if 0 usart1_queue (data); if (data == '\r') usart1_queue ('\n'); +#endif } @@ -83,9 +85,11 @@ usart2_isr (void) else { usart_send_blocking (USART2, data); +#if 0 usart1_queue (data); if (data == '\r') usart1_queue ('\n'); +#endif } } diff --git a/doc/BT_SIN_350v1p5.pdf b/doc/BT_SIN_350v1p5.pdf new file mode 100644 index 0000000..7c5aa34 Binary files /dev/null and b/doc/BT_SIN_350v1p5.pdf differ diff --git a/doc/BT_SIN_351v4p6.pdf b/doc/BT_SIN_351v4p6.pdf new file mode 100644 index 0000000..44fc67c Binary files /dev/null and b/doc/BT_SIN_351v4p6.pdf differ diff --git a/doc/TTP229.pdf b/doc/TTP229.pdf deleted file mode 100644 index ca4c896..0000000 Binary files a/doc/TTP229.pdf and /dev/null differ diff --git a/doc/TTP229B-Schematic-Diagram.pdf b/doc/TTP229B-Schematic-Diagram.pdf deleted file mode 100644 index 70d73f8..0000000 Binary files a/doc/TTP229B-Schematic-Diagram.pdf and /dev/null differ -- cgit v1.2.3