int main(int argc, const char** argv) { bb_open(); opa_probe(); if (argc != 2) { printf("Must specify gpio state\n"); return 1; } opa_gpio(strtoul(argv[1], 0, 0)); bb_execute(); bb_close(); return 0; }
int main(int argc, const char** argv) { bb_open(); opa_probe(); uint32_t address = 0, data = 0; if (argc > 1) address = strtoul(argv[1], 0, 0); if (argc > 2) data = strtoul(argv[2], 0, 0); // Note: executing read/write puts CPU into reset and leaves it there if (argc == 2) { opa_read(address); printf("read(0x%x) = 0x%x\n", address, (uint32_t)bb_execute64()); } else if (argc == 3) { opa_write(address, data, 1); printf("write(0x%x) = 0x%x (was 0x%x)\n", address, data, (uint32_t)bb_execute64()); } bb_close(); return 0; }
SANE_Status __attribute__ ((visibility ("hidden"))) ledm_open(SANE_String_Const device, SANE_Handle *handle) { struct hpmud_model_attributes ma; int stat = SANE_STATUS_IO_ERROR; if(session) { return SANE_STATUS_DEVICE_BUSY; } if((session = create_session()) == NULL) return SANE_STATUS_NO_MEM; /* Set session to specified device. */ snprintf(session->uri, sizeof(session->uri)-1, "hp:%s", device); /* prepend "hp:" */ /* Get actual model attributes from models.dat. */ hpmud_query_model(session->uri, &ma); session->scan_type = ma.scantype; if (hpmud_open_device(session->uri, ma.mfp_mode, &session->dd) != HPMUD_R_OK) { stat = SANE_STATUS_IO_ERROR; goto bugout; } init_options(session); if (bb_open(session)) { stat = SANE_STATUS_IO_ERROR; goto bugout; } /* Set supported Scan Modes as determined by bb_open. */ ledm_control_option(session, LEDM_OPTION_SCAN_MODE, SANE_ACTION_SET_AUTO, NULL, NULL); /* set default option */ /* Set scan input sources as determined by bb_open. */ ledm_control_option(session, LEDM_OPTION_INPUT_SOURCE, SANE_ACTION_SET_AUTO, NULL, NULL); /* set default option */ /* Set supported resolutions. */ ledm_control_option(session, LEDM_OPTION_SCAN_RESOLUTION, SANE_ACTION_SET_AUTO, NULL, NULL); /* set default option */ /* Set supported contrast. */ ledm_control_option(session, LEDM_OPTION_CONTRAST, SANE_ACTION_SET_AUTO, NULL, NULL); /* set default option */ /* Set supported compression. (Note, cm1017 may say it supports MMR, but it doesn't) */ ledm_control_option(session, LEDM_OPTION_COMPRESSION, SANE_ACTION_SET_AUTO, NULL, NULL); /* set default option */ /* Determine supported jpeg quality factor as determined by bb_open. */ ledm_control_option(session, LEDM_OPTION_JPEG_QUALITY, SANE_ACTION_SET_AUTO, NULL, NULL); /* set default option */ /* Set x,y extents. See bb_open */ ledm_control_option(session, LEDM_OPTION_TL_X, SANE_ACTION_SET_AUTO, NULL, NULL); /* set default option */ ledm_control_option(session, LEDM_OPTION_TL_Y, SANE_ACTION_SET_AUTO, NULL, NULL); /* set default option */ ledm_control_option(session, LEDM_OPTION_BR_X, SANE_ACTION_SET_AUTO, NULL, NULL); /* set default option */ ledm_control_option(session, LEDM_OPTION_BR_Y, SANE_ACTION_SET_AUTO, NULL, NULL); /* set default option */ *handle = (SANE_Handle *)session; stat = SANE_STATUS_GOOD; bugout: if (stat != SANE_STATUS_GOOD) { if (session) { bb_close(session); if (session->cd > 0) hpmud_close_channel(session->dd, session->cd); if (session->dd > 0) hpmud_close_device(session->dd); free(session); session = NULL; } } return stat; }