📄 oap-head.c
字号:
/* Set timer count to zero */ result = oap_i2c_smbus_write_byte(file, RESET_TIMER_COUNT_COMMAND); if (result < 0) { fprintf(stderr, "Error setting timer count to zero\n"); close(file); exit(EXIT_FAILURE); }}void activate(int file){ __s32 result; /* Activate PWM output */ result = oap_i2c_smbus_write_byte(file, ENABLE_PWM_OUTPUT_COMMAND); if (result < 0) { fprintf(stderr, "Error activating PWM output\n"); close(file); exit(EXIT_FAILURE); }} void disable(int file){ __s32 result; /* Disable PWM output */ result = oap_i2c_smbus_write_byte(file, DISABLE_PWM_OUTPUT_COMMAND); if (result < 0) { fprintf(stderr, "Error disabling PWM output\n"); close(file); exit(EXIT_FAILURE); }}void report_state(int file){ __s32 result; /* Read PWM power state */ result = oap_i2c_smbus_read_byte_data(file, READ_PWM_OUTPUT_STATUS_COMMAND); if (result < 0) { fprintf(stderr, "Error reading PWM output status\n"); close(file); exit(EXIT_FAILURE); } printf("PWM output, timer, IR sensing status: %s\n", result ? "Active" : "Disabled"); /* Read Pan servo setpoint */ result = oap_i2c_smbus_read_byte_data(file, READ_PAN_SERVO_SETPOINT_COMMAND); if (result < 0) { fprintf(stderr, "Error reading pan servo setpoint\n"); close(file); exit(EXIT_FAILURE); } printf("Pan servo setpoint: %d\n", result); /* Read Pan servo actual */ result = oap_i2c_smbus_read_word_data(file, READ_PAN_SERVO_ACTUAL_COMMAND); if (result < 0) { fprintf(stderr, "Error reading pan servo actual\n"); close(file); exit(EXIT_FAILURE); } printf("Pan servo actual driven position: %d\n", result / 256); printf("Pan servo reading timer count: %d\n", result % 256); /* Read Tilt servo setpoint */ result = oap_i2c_smbus_read_byte_data(file, READ_TILT_SERVO_SETPOINT_COMMAND); if (result < 0) { fprintf(stderr, "Error reading tilt servo setpoint\n"); close(file); exit(EXIT_FAILURE); } printf("Tilt servo setpoint: %d\n", result); /* Read Tilt servo actual */ result = oap_i2c_smbus_read_word_data(file, READ_TILT_SERVO_ACTUAL_COMMAND); if (result < 0) { fprintf(stderr, "Error reading tilt servo actual\n"); close(file); exit(EXIT_FAILURE); } printf("Tilt servo actual driven position: %d\n", result / 256); printf("Tilt servo reading timer count: %d\n", result % 256); /* Read raw analog IR sensor */ result = oap_i2c_smbus_read_byte_data(file, READ_RAW_ANALOG_IR_SENSOR_COMMAND); if (result < 0) { fprintf(stderr, "Error reading raw IR sensor analog value\n"); close(file); exit(EXIT_FAILURE); } printf("IR sensor raw ADC bitcount: %d\n", result); /* Read 8-bit timer count */ result = oap_i2c_smbus_read_byte_data(file, READ_CURRENT_TIMER_COUNT_COMMAND); if (result < 0) { fprintf(stderr, "Error reading timer count\n"); close(file); exit(EXIT_FAILURE); } printf("8-bit free running timer tick count: %d\n", result); /* IR Triggered Event Status */ result = oap_i2c_smbus_read_byte_data(file, READ_IR_TRIGGERED_EVENT_STATUS_COMMAND); if (result < 0) { fprintf(stderr, "Error reading IR triggered event status\n"); close(file); exit(EXIT_FAILURE); } printf("IR Triggered Event Stored: %s\n", result ? "yes" : "no"); if (result) { /* IR Triggered Event is stored - get the details */ /* IR triggered event pan actual driven position */ result = oap_i2c_smbus_read_byte_data(file, READ_IR_TRIGGERED_EVENT_PAN_ACTUAL_COMMAND); if (result < 0) { fprintf(stderr, "Error reading IR triggered event pan actual\n"); close(file); exit(EXIT_FAILURE); } printf("IR Triggered Event Pan position: %d\n", result); /* IR triggered event ADC bitcount */ result = oap_i2c_smbus_read_byte_data(file, READ_IR_TRIGGERED_EVENT_ANALOG_COMMAND); if (result < 0) { fprintf(stderr, "Error reading IR triggered event analog bitcount\n"); close(file); exit(EXIT_FAILURE); } printf("IR Triggered Event ADC bitcount: %d\n", result); /* IR triggered event timer */ result = oap_i2c_smbus_read_byte_data(file, READ_IR_TRIGGERED_EVENT_TIMER_COUNT_COMMAND); if (result < 0) { fprintf(stderr, "Error reading IR triggered event timer\n"); close(file); exit(EXIT_FAILURE); } printf("IR Triggered Event timer count: %d\n", result); printf("IR Triggered Event is now locked. Use 'oap-head r' to reset.\n"); } /* Maximum Change Per Period */ result = oap_i2c_smbus_read_byte_data(file, READ_MAX_CHANGE_PER_PERIOD_COMMAND); if (result < 0) { fprintf(stderr, "Error reading max change per period\n"); close(file); exit(EXIT_FAILURE); } printf("'Maximum Change Per Period' configuration setting: %d\n", result); /* IR Sensor Neutral */ result = oap_i2c_smbus_read_byte_data(file, READ_IR_SENSOR_NEUTRAL_VALUE_COMMAND); if (result < 0) { fprintf(stderr, "Error reading IR sensor neutral\n"); close(file); exit(EXIT_FAILURE); } printf("'IR Sensor Neutral' configuration setting: %d\n", result); /* IR sensor trigger */ result = oap_i2c_smbus_read_byte_data(file, READ_IR_SENSOR_TRIGGER_THRESHOLD_COMMAND); if (result < 0) { fprintf(stderr, "Error reading IR sensor trigger\n"); close(file); exit(EXIT_FAILURE); } printf("'IR Sensor Trigger Threhsold' configuration setting: %d\n", result); /* IR triggered event mode */ result = oap_i2c_smbus_read_byte_data(file, READ_IR_TRIGGERED_EVENT_MODE_COMMAND); if (result < 0) { fprintf(stderr, "Error reading IR triggered event mode\n"); close(file); exit(EXIT_FAILURE); } printf("'IR Triggered Event Mode' configuration setting: %d\n", result);}int check_params(int argc, char* argv[]){ if ((argc == 2) && (strcmp(argv[1], "s") == 0)) return 1; if ((argc == 3) && (strcmp(argv[1], "p") == 0)) return 1; if ((argc == 3) && (strcmp(argv[1], "t") == 0)) return 1; if ((argc == 3) && (strcmp(argv[1], "c") == 0)) return 1; if ((argc == 3) && (strcmp(argv[1], "n") == 0)) return 1; if ((argc == 3) && (strcmp(argv[1], "i") == 0)) return 1; if ((argc == 2) && (strcmp(argv[1], "r") == 0)) return 1; if ((argc == 3) && (strcmp(argv[1], "m") == 0)) return 1; if ((argc == 2) && (strcmp(argv[1], "z") == 0)) return 1; if ((argc == 2) && (strcmp(argv[1], "a") == 0)) return 1; if ((argc == 2) && (strcmp(argv[1], "d") == 0)) return 1; return 0;}void read_config(){ config_t conf; char s_device_address[4]; /* Open configuration file */ if (!config_open(&conf, CONFIG_FILENAME, C_READ)) { fprintf(stderr, "Unable to open configuration file %s for reading\n", CONFIG_FILENAME); exit(EXIT_FAILURE); } /* Read configuration settings */ if (!config_read(&conf, "I2C", "DeviceName", filename, 100)) { fprintf(stderr, "Unable to read DeviceName from [I2C] section of configuration file\n"); config_close(&conf); exit(EXIT_FAILURE); } if (!config_read(&conf, "Head Control Module", "I2CAddress", s_device_address, 4)) { fprintf(stderr, "Unable to read I2CAddress from [Head Control Module] section of\n" "configuration file.\n"); config_close(&conf); exit(EXIT_FAILURE); } device_address = atoi(s_device_address); /* Close configuration file */ config_close(&conf);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -