bool register_resource(const std::string& resource, http_resource<T>* res, bool family = false ) { details::http_resource_mirror hrm(res); return register_resource(resource, hrm, family); }
// // 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 // // Declare SoftDevice Object // bleDevice ble; ble.enable(); // enable BLE stack // GAP ble.m_gap.settings(DEVICE_NAME); // set Device Name on GAP ble.m_gap.tx_power(BLE_TX_0dBm); // set output radio Power // // Declare a HRM service object // bleServiceHRM hrm(ble); // // Declare a HTM service object // bleServiceHTM htm(ble); // // Declare a BAT service object // bleServiceBattery bat(ble); // // Add "connection parameters update" negotiation. (optional) // bleConnParams conn(ble); // // update advertisement contents // ble.m_advertising.commpany_identifier(APP_COMPANY_IDENTIFIER); // add company identifier ble.m_advertising.add_uuid_to_complete_list(hrm); // add hrm object to the uuid list of advertisement ble.m_advertising.add_uuid_to_complete_list(htm); // add htm object to the uuid_list of advertisement ble.m_advertising.add_uuid_to_complete_list(bat); // add bat object to the uuid_list of advertisement ble.m_advertising.appearance(BLE_APPEARANCE_GENERIC_HEART_RATE_SENSOR); ble.m_advertising.update(); // update advertisement data // Start advertising ble.m_advertising.interval(APP_ADV_INTERVAL); // set advertising interval // ble.m_advertising.timeout(30); // set timeout, will cause the system to enter to the power off mode. ble.m_advertising.start(); // // Tickless Low Power Feature // #ifndef DEBUG CPowerSave::tickless(true); #endif // // Analog input (for VDD detected) // CAdc::init(); // AREF internal VBG CAdc::source(VDD_1_3); // source from internal: VDD x 1/3 CAdc::enable(); // // LED Task // CThread t(tskLED); t.start("LED", 45); // stack size=45 DWORD // uint16_t value; float temp, percentage; // // Enter main loop. // while(1) { // // wait for BLE connected, the task will be blocked until connected. // ble.wait(); // // Heart Rate Measurement Service // if ( hrm.isAvailable() ) { // is service available (when remote app connected to the service) hrm.send(70); // send Heart Rate Measurement } // // Health Thermometer Measurement Service // if ( htm.isAvailable() ) { // is service available (when remote app connected to the service) if ( bleServiceHTM::get_temperature(temp) ) { htm.send(temp); // send temp } } // // Battery Service // if ( bat.isAvailable() ) { // is service available (when remote app connected to the service) if ( CAdc::read(value) ) { percentage = (value / 1024.0f) * 100.0; bat.send(percentage); } } // Negotiate the "connection parameters update" conn.negotiate(); // sleep to make more idle time for tickless. sleep(200); } }
// // main task // int main(void) { #ifdef DEBUG #if __USE_USB usbCDC ser; ser.connect(); #else CSerial ser; ser.settings(115200); #endif CDebug dbg(ser); dbg.start(); #endif /************************************************************************* * * your setup code here * **************************************************************************/ // // BLE engine (serial stream) // bleSerial ble("myHRM"); ble.enable(96); // // Heart Beat Rate Service // bleHeartRate hrm(ble); hrm.supportContact(true); hrm.contactStatus(true); hrm.setSensorLocation(HRSL_FINGER); // // Battery Level & Health Thermometer Service (Use internal sensors) // bleBatteryLevel bat(ble); bleHealthThermometer ht(ble); // // Pulse Sensor // myPulseSensor pulse(AD0); // signal on AD0 pulse.start(); // // Fade LED task // ledTask led(pulse); led.start("LED", 50); // reduce stack size to 58 to increase the heap memory // // // CTimeout t1, t2, t3; float value; uint8_t level; while(1) { /********************************************************************** * * your loop code here * **********************************************************************/ // // Heart Rate Measurement // if ( hrm.isAvailable() ) { if ( t1.isExpired(1000) ) { // interval 1 second t1.reset(); hrm.sendMeasure((uint8_t)pulse.BPM); } } // // Battery Level // if ( t2.isExpired(10000) ) { // interval 10 seconds t2.reset(); if ( bat.readSystemVoltage(value) ) { level = map(value, 2.0, 3.3, 0, 100); // 0%~100% bat.sendBatteryLevel(level); } } // // Health Thermometer Service // if ( t3.isExpired(5000) ) { // interval 5 seconds t3.reset(); if ( ht.readTemperature(value) ) { ht.sendMeasure(value); } } } return 0 ; }
int main() { hrm(c); return 0; }
void V800export::export_sessions(QList<QString> sessions, unsigned char mode) { QSettings settings; QString default_dir = settings.value(tr("default_dir")).toString(); for(int sessions_iter = 0; sessions_iter < sessions.length(); sessions_iter++) { QStringList filters; filters << QString(tr("%1_*")).arg(sessions[sessions_iter]); QDir filter_dir(default_dir); filter_dir.setNameFilters(filters); filter_dir.setFilter(QDir::Dirs); int multi_sessions_iter; QStringList multi_sessions = filter_dir.entryList(); for(multi_sessions_iter = 0; multi_sessions_iter < multi_sessions.length(); multi_sessions_iter++) { if(!make_bipolar_names(multi_sessions[multi_sessions_iter])) { emit export_session_error(sessions[sessions_iter], RENAME_ERROR); continue; } QString session_info(QString(tr("%1/%2/v2-users-0000000-training-sessions-%3")).arg(default_dir).arg(multi_sessions[multi_sessions_iter]).arg(multi_sessions[multi_sessions_iter])); polar::v2::TrainingSession parser(session_info); qDebug("Parser: %s", session_info.toUtf8().constData()); parser.setTcxOption(polar::v2::TrainingSession::ForceTcxUTC, true); if(!parser.parse()) emit export_session_error(sessions[sessions_iter], PARSE_ERROR); if(mode & TCX_EXPORT) { QString tcx(QString(tr("%1/%2.tcx")).arg(default_dir).arg(multi_sessions[multi_sessions_iter])); if(!parser.writeTCX(tcx)) emit export_session_error(sessions[sessions_iter], TCX_ERROR); } if(mode & HRM_EXPORT) { QString hrm(QString(tr("%1/%2")).arg(default_dir).arg(multi_sessions[multi_sessions_iter])); QStringList hrm_out = parser.writeHRM(hrm); if(hrm_out.length() < 1) emit export_session_error(sessions[sessions_iter], HRM_ERROR); } if(mode & GPX_EXPORT) { QString gpx(QString(tr("%1/%2.gpx")).arg(default_dir).arg(multi_sessions[multi_sessions_iter])); if(!parser.writeGPX(gpx)) emit export_session_error(sessions[sessions_iter], GPX_ERROR); } QDir(QString(tr("%1/%2")).arg(default_dir).arg(multi_sessions[multi_sessions_iter])).removeRecursively(); } emit export_session_done(sessions_iter, sessions.length()); } emit export_sessions_done(); }