int main()
{
    int i;
    char buffer[200];
    size_t dummy_size_t;
    setupHandlers();
    FILE *p = popen("echo Hallo World", "r");
    while (!feof(p)) {
        int n = fread(buffer, 200, 1, p);
        dummy_size_t = write(2, buffer, n);
    }
    fclose(p);
    for (i = 0; i < 1000000; i++) ;
    return 0;
}
SignalManager::SignalManager(QGuiApplication* app) : QObject(NULL), m_app(app)
{
    if (setupHandlers())
    {
        QLOG_ERROR() << "Failed to install SignalDaemon handlers.";
    }

    QLOG_DEBUG() << "Signal handlers installed successfully.";

    if (socketpair(AF_UNIX, SOCK_STREAM, 0, SignalManager::sigtermFd))
    {
        QLOG_ERROR() << "Couldn't create TERM socketpair";
    }

    snTerm = new QSocketNotifier(SignalManager::sigtermFd[1], QSocketNotifier::Read, this);
    connect(snTerm, SIGNAL(activated(int)), this, SLOT(handleSignal()));
}
Beispiel #3
0
int main(void)
{
	glm::mat3 sphereToCard;
	if (!loadMatrix("rotation.calibration", sphereToCard))
	{
		std::cerr << "Warning: could not found rotation calibration" << std::endl;
	}

	if (!leds.initialize())
	{
		std::cerr << "Failed to initialize leds" << std::endl;
		return -1;
	}

	GY85 gy85;
	if (!gy85.initialize())
	{
		std::cerr << "Failed to initialize GY-85" << std::endl;
		return -1;
	}

	Timer timer;
	if (!timer.initialize())
	{
		std::cerr << "Failed to initialize timer" << std::endl;
		return -1;
	}

	setupHandlers();

	Mode mode(leds);
	if (!mode.loadScript())
	{
		std::cerr << "Failed to load script" << std::endl;
		return -1;
	}

	for (;;)
	{
		float dt = timer.getElapsedTime();
		gy85.update(dt);

		glm::vec3 accelerometer;
		gy85.getAccelerometer(accelerometer);

		glm::vec3 compass;
		gy85.getCompass(compass);

		glm::mat3 worldToCard;
		computeToWorldMatrix(accelerometer, compass, worldToCard);
		glm::mat3 cardToWorld = glm::inverse(worldToCard);

		glm::mat3 sphereToWorld = cardToWorld * sphereToCard;
		leds.updateWorldPositions(sphereToWorld);

		leds.clear();

		if (mode.update(dt))
		{
			leds.render();
		}
		else
		{
			usleep(100000);
		}
	}

	return 0;
}
Beispiel #4
0
static int gConfigure(int gFile)
{
    CHECK(ITG3200_Init(gFile, ITG3200_ID, true));
    
    struct ITG3200_Acquisition confAcquisition = {
        .lowPassFilter = ITG3200_LOWPASSFILTER_42,
        .sampleRateDivider = 0,
    };
    CHECK(ITG3200_ConfigureAcquisition(gFile, &confAcquisition));
    
    struct ITG3200_Power confPower = {
        .clockSource = ITG3200_CLOCKSOURCE_PLL_X,
    };
    CHECK(ITG3200_ConfigurePower(gFile, &confPower));
    
    return 0;
}

int main(void)
{
	int adapter;
    char filename[20];

    for (adapter = 0; adapter < MAX_ADAPTERS; ++adapter)
    {
        snprintf(filename, 20, "/dev/i2c-%d", adapter);
		if (!access(filename, R_OK | W_OK))
			break;
    }

	if (adapter == MAX_ADAPTERS)
	{
		fprintf(stderr, "No I2C adapter found\n");
		return -1;
	}

    aFile = open(filename, O_RDWR);
    if (aConfigure(aFile))
    {
        fprintf(stderr, "Failed to initialize accelerometer\n");
        return closeAndExit(-1);
    }

    cFile = open(filename, O_RDWR);
    if (cConfigure(cFile))
    {
        fprintf(stderr, "Failed to initialize compass\n");
        return closeAndExit(-1);
    }

    gFile = open(filename, O_RDWR);
    if (gConfigure(gFile))
    {
        fprintf(stderr, "Failed to initialize gyroscope\n");
        return closeAndExit(-1);
    }

    ADXL345_ReadData(aFile, &aX.data, &aY.data, &aZ.data);
    HMC5883L_ReadData(cFile, &cX.data, &cY.data, &cZ.data);
    ITG3200_ReadData(gFile, &gX.data, &gY.data, &gZ.data);
    ITG3200_ReadTemperature(gFile, &gT.data);

	initCoordinate(&aX);
	initCoordinate(&aY);
	initCoordinate(&aZ);
	initCoordinate(&cX);
	initCoordinate(&cY);
	initCoordinate(&cZ);
	initCoordinate(&gX);
	initCoordinate(&gY);
    initCoordinate(&gZ);
    initCoordinate(&gT);

	setupHandlers();

	initscr();
	noecho();
	curs_set(false);

	running = 1;
	while (running)
	{
        ADXL345_ReadData(aFile, &aX.data, &aY.data, &aZ.data);
        HMC5883L_ReadData(cFile, &cX.data, &cY.data, &cZ.data);
        ITG3200_ReadData(gFile, &gX.data, &gY.data, &gZ.data);
        ITG3200_ReadTemperature(gFile, &gT.data);

        updateCoordinate(&aX);
        updateCoordinate(&aY);
        updateCoordinate(&aZ);
        updateCoordinate(&cX);
        updateCoordinate(&cY);
        updateCoordinate(&cZ);
        updateCoordinate(&gX);
        updateCoordinate(&gY);
        updateCoordinate(&gZ);
        updateCoordinate(&gT);

		clear();

		mvprintw(0, 0, "%16s: %8d X %8d Y %8d Z\n", "Accelerometer", aX.data, aY.data, aZ.data);
		mvprintw(1, 0, "%16s: %8.1f X %8.1f Y %8.1f Z\n", "Smoothed", aX.smoothed, aY.smoothed, aZ.smoothed);
		mvprintw(2, 0, "%16s: %8.1f X %8.1f Y %8.1f Z\n", "Min", aX.min, aY.min, aZ.min);
        mvprintw(3, 0, "%16s: %8.1f X %8.1f Y %8.1f Z\n", "Max", aX.max, aY.max, aZ.max);
        mvprintw(4, 0, "%16s: %8.1f X %8.1f Y %8.1f Z\n", "Normalized", aX.normalized, aY.normalized, aZ.normalized);

		mvprintw(6, 0, "%16s: %8d X %8d Y %8d Z\n", "Compass", cX.data, cY.data, cZ.data);
		mvprintw(7, 0, "%16s: %8.1f X %8.1f Y %8.1f Z\n", "Smoothed", cX.smoothed, cY.smoothed, cZ.smoothed);
		mvprintw(8, 0, "%16s: %8.1f X %8.1f Y %8.1f Z\n", "Min", cX.min, cY.min, cZ.min);
        mvprintw(9, 0, "%16s: %8.1f X %8.1f Y %8.1f Z\n", "Max", cX.max, cY.max, cZ.max);
        mvprintw(10, 0, "%16s: %8.1f X %8.1f Y %8.1f Z\n", "Normalized", cX.normalized, cY.normalized, cZ.normalized);

		mvprintw(12, 0, "%16s: %8d X %8d Y %8d Z\n", "Gyroscope", gX.data, gY.data, gZ.data);
		mvprintw(13, 0, "%16s: %8.1f X %8.1f Y %8.1f Z\n", "Smoothed", gX.smoothed, gY.smoothed, gZ.smoothed);
		mvprintw(14, 0, "%16s: %8.1f X %8.1f Y %8.1f Z\n", "Min", gX.min, gY.min, gZ.min);
        mvprintw(15, 0, "%16s: %8.1f X %8.1f Y %8.1f Z\n", "Max", gX.max, gY.max, gZ.max);
        mvprintw(16, 0, "%16s: %8.1f X %8.1f Y %8.1f Z\n", "Normalized", gX.normalized, gY.normalized, gZ.normalized);

		mvprintw(18, 0, "%16s: %8d %8.1f °C\n", "Temperature", gT.data, ITG3200_ConvertTemperature(gT.data));
        mvprintw(19, 0, "%16s: %8.1f %8.1f °C\n", "Smoothed", gT.smoothed, ITG3200_ConvertTemperature(gT.smoothed));
        mvprintw(20, 0, "%16s: %8.1f %8.1f °C\n", "Min", gT.min, ITG3200_ConvertTemperature(gT.min));
        mvprintw(21, 0, "%16s: %8.1f %8.1f °C\n", "Max", gT.max, ITG3200_ConvertTemperature(gT.max));
        mvprintw(22, 0, "%16s: %8.1f\n", "Normalized", gT.normalized);

		refresh();

		usleep(DELAY);
	}

    endwin();
	
    close(aFile);
    close(cFile);
    close(gFile);

    return 0;
}
Beispiel #5
0
Parser::Parser(TokenStream& tokens, DataHandler& data)
    : ts(tokens), current(), data_handler(data), handlers(),
      program(new Ast::Block(&data))
{
    setupHandlers();
}