Test that any two pins don't have short circuit
Dependencies: BLE_API mbed nRF51822
main.cpp@0:bd673d937d4a, 2015-01-28 (annotated)
- Committer:
- smigielski
- Date:
- Wed Jan 28 12:45:04 2015 +0000
- Revision:
- 0:bd673d937d4a
Initial version
Who changed what in which revision?
User | Revision | Line number | New 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 | } |