ER ev3_motor_config(motor_port_t port, motor_type_t type) { ER ercd; CHECK_PORT(port); CHECK_MOTOR_TYPE(type); // lazy_initialize(); mts[port] = type; /* * Set Motor Type */ char buf[TNUM_MOTOR_PORT + 1]; buf[0] = opOUTPUT_SET_TYPE; for (int i = EV3_PORT_A; i < TNUM_MOTOR_PORT; ++i) buf[i + 1] = getDevType(mts[i]); motor_command(buf, sizeof(buf)); /* * Set initial state to IDLE */ buf[0] = opOUTPUT_STOP; buf[1] = 1 << port; buf[2] = 0; motor_command(buf, sizeof(buf)); ercd = E_OK; error_exit: return ercd; }
// A simple tester for testing operation of toggling characters via OpenCL int main(int argc, char *argv[]) { if (argc < 4) { std::cout << "Specify [CPU|GPU|ACC] <InputBMP> <OutputBMP> <theta_radians>\n"; return 1; } // Load source image from the given file BitmapImage srcImg; srcImg.load(argv[2]); // Create the OpenCL command queue for a given device ClCmdQueue queue(getDevType(argv[1])); // Create a kernel and functor using OpenCL kernel code from a file. cl::Kernel kernel = queue.loadKernel("batesokr_rotate.cl", "img_rotate"); cl::NDRange globalRange(srcImg.getWidth(), srcImg.getHeight()); cl::KernelFunctor vrotate(kernel, queue.getQueue(), cl::NullRange, globalRange, cl::NullRange); BitmapImage outImg = clRotate(queue, vrotate, srcImg, atof(argv[4])*(M_PI/180.0f)); outImg.write(argv[3]); return 0; }
ER ev3_motors_init(motor_type_t typeA, motor_type_t typeB, motor_type_t typeC, motor_type_t typeD) { ER ercd; CHECK_MOTOR_TYPE(typeA); CHECK_MOTOR_TYPE(typeB); CHECK_MOTOR_TYPE(typeC); CHECK_MOTOR_TYPE(typeD); lazy_initialize(); mts[EV3_PORT_A] = typeA; mts[EV3_PORT_B] = typeB; mts[EV3_PORT_C] = typeC; mts[EV3_PORT_D] = typeD; /** * Set device types */ char buf[TNUM_MOTOR_PORT + 1]; buf[0] = opOUTPUT_SET_TYPE; for (int i = EV3_PORT_A; i < TNUM_MOTOR_PORT; ++i) buf[i + 1] = getDevType(mts[i]); ercd = motor_command(buf, sizeof(buf)); assert(ercd == E_OK); /** * Set initial state to IDLE */ buf[0] = opOUTPUT_STOP; buf[1] = 0xF; buf[2] = 0; ercd = motor_command(buf, sizeof(buf)); assert(ercd == E_OK); ercd = E_OK; error_exit: return ercd; }