Test that any two pins don't have short circuit

Dependencies:   BLE_API mbed nRF51822

Committer:
smigielski
Date:
Wed Jan 28 12:45:04 2015 +0000
Revision:
0:bd673d937d4a
Initial version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
smigielski 0:bd673d937d4a 1 #include <string.h>
smigielski 0:bd673d937d4a 2 #include "mbed.h"
smigielski 0:bd673d937d4a 3 #include "BLEDevice.h"
smigielski 0:bd673d937d4a 4
smigielski 0:bd673d937d4a 5 #include "UARTService.h"
smigielski 0:bd673d937d4a 6
smigielski 0:bd673d937d4a 7 #define DEBUG 1
smigielski 0:bd673d937d4a 8
smigielski 0:bd673d937d4a 9 #if DEBUG
smigielski 0:bd673d937d4a 10 #define LOG_BUFFER 100
smigielski 0:bd673d937d4a 11 #define LOG(...) do { if (uart) {snprintf(debugBuffer, LOG_BUFFER , __VA_ARGS__); uart->write(debugBuffer, strlen(debugBuffer));} } while (0)
smigielski 0:bd673d937d4a 12 #else
smigielski 0:bd673d937d4a 13 #define LOG_BUFFER 0
smigielski 0:bd673d937d4a 14 #define LOG(...) /* nothing */
smigielski 0:bd673d937d4a 15 #endif /* #if DEBUG */
smigielski 0:bd673d937d4a 16
smigielski 0:bd673d937d4a 17
smigielski 0:bd673d937d4a 18 char debugBuffer[LOG_BUFFER];
smigielski 0:bd673d937d4a 19 BLEDevice ble;
smigielski 0:bd673d937d4a 20 UARTService *uart;
smigielski 0:bd673d937d4a 21
smigielski 0:bd673d937d4a 22 PinName pins[] = {P0_0, P0_1, P0_2,P0_3,P0_4,P0_5,P0_6,P0_7,P0_8,P0_9,P0_10,
smigielski 0:bd673d937d4a 23 P0_11,P0_12,P0_13,P0_14,P0_15,P0_16,P0_17,P0_18,P0_19,P0_20,
smigielski 0:bd673d937d4a 24 P0_21,P0_22,P0_23,P0_24,P0_25,P0_26,P0_27,P0_28,P0_29,P0_30};
smigielski 0:bd673d937d4a 25
smigielski 0:bd673d937d4a 26 void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason)
smigielski 0:bd673d937d4a 27 {
smigielski 0:bd673d937d4a 28 LOG("Disconnected!\n\r");
smigielski 0:bd673d937d4a 29 LOG("Restarting the advertising process\n\r");
smigielski 0:bd673d937d4a 30 ble.startAdvertising();
smigielski 0:bd673d937d4a 31 }
smigielski 0:bd673d937d4a 32
smigielski 0:bd673d937d4a 33 void testPins(){
smigielski 0:bd673d937d4a 34 for (int i =0;i<=30;i++){
smigielski 0:bd673d937d4a 35 for (int j=i+1;j<=30;j++){
smigielski 0:bd673d937d4a 36 DigitalOut output(pins[i]);
smigielski 0:bd673d937d4a 37 DigitalIn inup(pins[j],PullUp);
smigielski 0:bd673d937d4a 38 output=0;
smigielski 0:bd673d937d4a 39 if (inup==0){
smigielski 0:bd673d937d4a 40 output=1;
smigielski 0:bd673d937d4a 41 if (inup==1){
smigielski 0:bd673d937d4a 42 LOG("Check pin %d & %d (PullUp)\n\r",i,j);
smigielski 0:bd673d937d4a 43 }
smigielski 0:bd673d937d4a 44 }
smigielski 0:bd673d937d4a 45 DigitalIn indown(pins[j],PullDown);
smigielski 0:bd673d937d4a 46 output=1;
smigielski 0:bd673d937d4a 47 if (indown==1){
smigielski 0:bd673d937d4a 48 output=0;
smigielski 0:bd673d937d4a 49 if (indown==0){
smigielski 0:bd673d937d4a 50 LOG("Check pin %d & %d (PullDown)\n\r",i,j);
smigielski 0:bd673d937d4a 51 }
smigielski 0:bd673d937d4a 52 }
smigielski 0:bd673d937d4a 53 }
smigielski 0:bd673d937d4a 54 }
smigielski 0:bd673d937d4a 55 }
smigielski 0:bd673d937d4a 56
smigielski 0:bd673d937d4a 57 void periodicCallback(void)
smigielski 0:bd673d937d4a 58 {
smigielski 0:bd673d937d4a 59 LOG("Testing...\r\n");
smigielski 0:bd673d937d4a 60 testPins();
smigielski 0:bd673d937d4a 61 LOG("Done!!!\r\n");
smigielski 0:bd673d937d4a 62 }
smigielski 0:bd673d937d4a 63
smigielski 0:bd673d937d4a 64
smigielski 0:bd673d937d4a 65
smigielski 0:bd673d937d4a 66 int main() {
smigielski 0:bd673d937d4a 67 Ticker ticker;
smigielski 0:bd673d937d4a 68 ticker.attach(periodicCallback, 5);
smigielski 0:bd673d937d4a 69
smigielski 0:bd673d937d4a 70 LOG("Initialising the nRF51822\n\r");
smigielski 0:bd673d937d4a 71 ble.init();
smigielski 0:bd673d937d4a 72 ble.onDisconnection(disconnectionCallback);
smigielski 0:bd673d937d4a 73
smigielski 0:bd673d937d4a 74 uart = new UARTService(ble);
smigielski 0:bd673d937d4a 75
smigielski 0:bd673d937d4a 76 /* setup advertising */
smigielski 0:bd673d937d4a 77 ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
smigielski 0:bd673d937d4a 78 ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
smigielski 0:bd673d937d4a 79 ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME,
smigielski 0:bd673d937d4a 80 (const uint8_t *)"BLE UART", sizeof("BLE UART") - 1);
smigielski 0:bd673d937d4a 81 ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS,
smigielski 0:bd673d937d4a 82 (const uint8_t *)UARTServiceUUID_reversed, sizeof(UARTServiceUUID_reversed));
smigielski 0:bd673d937d4a 83
smigielski 0:bd673d937d4a 84 ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */
smigielski 0:bd673d937d4a 85 ble.startAdvertising();
smigielski 0:bd673d937d4a 86
smigielski 0:bd673d937d4a 87 while (true) {
smigielski 0:bd673d937d4a 88 ble.waitForEvent();
smigielski 0:bd673d937d4a 89 }
smigielski 0:bd673d937d4a 90 }