Beispiel #1
0
//
// Main Routine
//
int main(void) {
#ifdef DEBUG
	CSerial ser;		// declare a UART object
	ser.enable();
	CDebug dbg(ser);	// Debug stream use the UART object
	dbg.start();
#endif

	//
	// Your setup code here
	//
	CThread t(tskBlink);
	t.start("blink");	// start the blink task

	CPin led0(LED_PIN_0);		// declare led0 on p0.18
	led0.output();

	//
    // Enter main loop.
	//
    while(1) {
    	//
    	// Your loop code here
    	//
    	led0.toggle();	// toggle the led0
    	sleep(500);
    }
}
Beispiel #2
0
//
// Main Routine
//
int main(void) {
#ifdef DEBUG
	CSerial ser;		// declare a UART object
	ser.enable();
	CDebug dbg(ser);	// Debug stream use the UART object
	dbg.start();
#endif

	//
	// SoftDevice
	//
	bleDevice ble;
	ble.attachEvent(onBleEvent);
	ble.enable();	// enable BLE SoftDevice task

	// GAP
	ble.m_gap.settings(DEVICE_NAME);	// set Device Name on GAP

	bleServiceUriBeacon beacon(ble);	// add uri beacon service

	switch ( beacon.get().tx_power_mode ) {
	case TX_POWER_MODE_LOWSET:
		ble.m_gap.tx_power(BLE_TX_m8dBm);
		break;
	case TX_POWER_MODE_LOW:
		ble.m_gap.tx_power(BLE_TX_m4dBm);
		break;
	case TX_POWER_MODE_MEDIUM:
		ble.m_gap.tx_power(BLE_TX_0dBm);
		break;
	case TX_POWER_MODE_HIGH:
		ble.m_gap.tx_power(BLE_TX_4dBm);
		break;
	}

	bleConnParams conn(ble);

	advertising_init(beacon_mode);

	//
	// Optional: Enable tickless technology
	//
#ifndef DEBUG
	CPowerSave::tickless(true);
#endif

	//
	//
	//
	CPin led0(LED_PIN_0);
	led0.output();

	CPin led1(LED_PIN_1);
	led1.output();

	CPin btn(BUTTON_PIN_0);
	btn.input();

	//
	// Enter main loop.
	//
	while (1) {
		//
		// check button
		//
		if ( btn==LOW ) {

			led1 = LED_ON;

			// stop advertising
			ble.m_advertising.stop();

			// change beacon mode
			if ( beacon_mode==beacon_mode_config ) {
				beacon_mode = beacon_mode_normal;
			} else {
				beacon_mode = beacon_mode_config;
			}

			// update mode and re-start the advertising
			advertising_init(beacon_mode);

			// waiting for btn released
			while(btn==LOW);

			led1 = LED_OFF;
		}

		//
		// LED Status
		//
		if ( beacon_mode==beacon_mode_config  ) {
			//
			// Negotiate the "connection parameters update" in main-loop
			//
			conn.negotiate();

			led0 = LED_ON;
			sleep(50);
			led0 = LED_OFF;
			sleep(150);

		} else {
			led0 = LED_ON;
			sleep(5);
			led0 = LED_OFF;
			sleep(beacon.get().beacon_period-5);
		}
	}
}