void auto_init_mpl3115a2(void) { assert(MPL3115A2_NUM == MPL3115A2_INFO_NUM); for (unsigned i = 0; i < MPL3115A2_NUM; i++) { LOG_DEBUG("[auto_init_saul] initializing mpl3115a2 #%u\n", i); if ((mpl3115a2_init(&mpl3115a2_devs[i], &mpl3115a2_params[i]) | mpl3115a2_set_active(&mpl3115a2_devs[i])) != MPL3115A2_OK) { LOG_ERROR("[auto_init_saul] error initializing mpl3115a2 #%u\n", i); continue; } /* temperature */ saul_entries[(i * 2)].dev = &(mpl3115a2_devs[i]); saul_entries[(i * 2)].name = mpl3115a2_saul_info[i].name; saul_entries[(i * 2)].driver = &mpl3115a2_temperature_saul_driver; /* atmospheric pressure */ saul_entries[(i * 2) + 1].dev = &(mpl3115a2_devs[i]); saul_entries[(i * 2) + 1].name = mpl3115a2_saul_info[i].name; saul_entries[(i * 2) + 1].driver = &mpl3115a2_pressure_saul_driver; /* register to saul */ saul_reg_add(&(saul_entries[(i * 2)])); saul_reg_add(&(saul_entries[(i * 2) + 1])); } }
int main(void) { puts("MPL3115A2 pressure sensor driver test application\n"); printf("Initializing MPL3115A2 sensor at I2C_%i... ", mpl3115a2_params[0].i2c); if (mpl3115a2_init(&dev, &mpl3115a2_params[0]) != MPL3115A2_OK) { puts("[FAILED] init device!"); return 1; } if (mpl3115a2_set_active(&dev) != MPL3115A2_OK) { puts("[FAILED] activate measurement!"); return 2; } puts("[SUCCESS]"); while (1) { uint32_t pressure; int16_t temp; uint8_t status; xtimer_usleep(SLEEP); if ((mpl3115a2_read_pressure(&dev, &pressure, &status) | mpl3115a2_read_temp(&dev, &temp)) != MPL3115A2_OK) { puts("[FAILED] read values!"); } else { printf("Pressure: %u Pa, Temperature: %3d.%d C, State: %#02x\n", (unsigned int)pressure, temp/10, abs(temp%10), status); } } return 0; }
void measure_enable(int cfg) { MEASURE_ON(); if (cfg & MEAS_ADC) adc_init(); if (cfg & MEAS_I2C) { i2c_init(&i2c, I2C2, CONFIG_I2C_FREQ); mpl3115a2_init(&i2c); } }
int main(void) { #ifdef WITH_SHELL /* initialize message queue */ msg_init_queue(_main_msg_q, Q_SZ); #endif eui64_t iid; // uint16_t chan = 15; netopt_enable_t acks = NETOPT_DISABLE; kernel_pid_t ifs[GNRC_NETIF_NUMOF]; gnrc_netif_get(ifs); gnrc_netapi_set(ifs[0], NETOPT_AUTOACK, 0, &acks, sizeof(acks)); // gnrc_netapi_set(ifs[0], NETOPT_CHANNEL, 0, &chan, sizeof(chan)); ipv6_addr_from_str(&dst_addr, "2001:affe:1234::1"); // ipv6_addr_from_str(&dst_addr, "fd38:3734:ad48:0:211d:50ce:a189:7cc4"); /* initialize senml payload */ gnrc_netapi_get(ifs[0], NETOPT_IPV6_IID, 0, &iid, sizeof(eui64_t)); initial_pos = sprintf(&p_buf[initial_pos], "[{\"bn\":\"urn:dev:mac:"); initial_pos += sprintf(&p_buf[initial_pos], "%02x%02x%02x%02x%02x%02x%02x%02x", iid.uint8[0], iid.uint8[1], iid.uint8[2], iid.uint8[3], iid.uint8[4], iid.uint8[5], iid.uint8[6], iid.uint8[7]); initial_pos += sprintf(&p_buf[initial_pos], "\"},"); /* initialize sensors */ hdc1000_init(&th_dev, HDC1000_I2C, HDC1000_ADDR); hdc1000_startmeasure(&th_dev); mpl3115a2_init(&p_dev, MPL3115A2_I2C, MPL3115A2_ADDR, MPL3115A2_OS_RATIO_DEFAULT); mpl3115a2_set_active(&p_dev); tcs37727_init(&light_dev, TCS37727_I2C, TCS37727_ADDR, TCS37727_ATIME_DEFAULT); tcs37727_set_rgbc_active(&light_dev); #ifdef WITH_SHELL thread_create(beac_stack, sizeof(beac_stack), PRIO, THREAD_CREATE_STACKTEST, beaconing, NULL, "beaconing"); char line_buf[SHELL_DEFAULT_BUFSIZE]; shell_run(shell_commands, line_buf, SHELL_DEFAULT_BUFSIZE); #else beaconing(NULL); #endif return 0; }