void Logo::create_all() { create_z(Point2f(m_upper_left.x - 0.99f * m_height, m_upper_left.y + 0.25f * m_height), 0.5f * m_height); create_e(Point2f(m_upper_left.x - 0.55f * m_height, m_upper_left.y + 0.25f * m_height), 0.5f * m_height); create_n(Point2f(m_upper_left.x - 0.11f * m_height, m_upper_left.y + 0.25f * m_height), 0.5f * m_height); create_i(Point2f(m_upper_left.x + 0.33f * m_height, m_upper_left.y + 0.25f * m_height), 0.5f * m_height); create_p(Point2f(m_upper_left.x + 0.77f * m_height, m_upper_left.y + 0.25f * m_height), 0.5f * m_height); create_e(Point2f(m_upper_left.x + 1.21f * m_height, m_upper_left.y + 0.25f * m_height), 0.5f * m_height); create_x(Point2f(m_upper_left.x + 1.65f * m_height, m_upper_left.y + 0.25f * m_height), 0.5f * m_height); create_logo(m_upper_left, m_height); }
/****************************************************************************** * main * * * * Main function * ******************************************************************************/ int main(int argc, char *argv[]) { int error = 0, i=1; l4_threadid_t dummy_l4id = L4_NIL_ID, loader_id; // l4events_event_t event; // l4events_nr_t eventnr; CORBA_Environment _env = dice_default_environment; /* init */ do_args(argc, argv); my_l4id = l4thread_l4_id( l4thread_myself() ); LOG("Hello, I'm running as "l4util_idfmt, l4util_idstr(my_l4id)); /* ask for 'con' (timeout = 5000 ms) */ if (names_waitfor_name(CON_NAMES_STR, &con_l4id, 50000) == 0) { LOG("PANIC: %s not registered at names", CON_NAMES_STR); enter_kdebug("panic"); } if (names_waitfor_name("LOADER", &loader_id, 50000) == 0) { LOG("PANIC: LOADER not registered at names"); enter_kdebug("panic"); } if (con_if_openqry_call(&con_l4id, MY_SBUF_SIZE, 0, 0, L4THREAD_DEFAULT_PRIO, &vc_l4id, CON_VFB, &_env)) enter_kdebug("Ouch, open vc failed"); if (con_vc_smode_call(&vc_l4id, CON_OUT, &dummy_l4id, &_env)) enter_kdebug("Ouch, setup vc failed"); if (con_vc_graph_gmode_call(&vc_l4id, &gmode, &xres, &yres, &bits_per_pixel, &bytes_per_pixel, &bytes_per_line, &accel_flags, &fn_x, &fn_y, &_env)) enter_kdebug("Ouch, graph_gmode failed"); if (bytes_per_pixel != 2) { printf("Graphics mode not 2 bytes/pixel, exiting\n"); con_vc_close_call(&vc_l4id, &_env); exit(0); } if (create_logo()) enter_kdebug("Ouch, logo creation failed"); while (!error && (i>0)) { if ((error = clear_screen())) enter_kdebug("Ouch, clear_screen failed"); if ((error = logo())) enter_kdebug("Ouch, logo failed"); l4_sleep(500); i--; } if (con_vc_close_call(&vc_l4id, &_env)) enter_kdebug("Ouch, close vc failed?!"); LOG("Finally closed vc"); LOG("Going to bed ..."); names_register("CON_DEMO1"); /* my_id = l4_myself(); event.len=sizeof(l4_umword_t); *(l4_umword_t*)event.str=my_id.id.task; l4events_send(1, &event, &eventnr, L4EVENTS_SEND_ACK); l4events_get_ack(eventnr, L4_IPC_NEVER); */ return 0; }
/** * Setup the test */ Logo setup(int count, char * line) { Logo input = create_logo(count); insert_line(input, line); return input; }
/****************************************************************************** * main * * * * Main function * ******************************************************************************/ int main(int argc, char *argv[]) { int error = 0; l4_threadid_t dummy_l4id = L4_NIL_ID; CORBA_Environment _env = dice_default_environment; /* init */ do_args(argc, argv); my_l4id = l4thread_l4_id( l4thread_myself() ); LOG("Hello, I'm running as "l4util_idfmt, l4util_idstr(my_l4id)); /* ask for 'con' (timeout = 5000 ms) */ if (names_waitfor_name(CON_NAMES_STR, &con_l4id, 50000) == 0) { LOG("PANIC: %s not registered at names", CON_NAMES_STR); enter_kdebug("panic"); } if (con_if_openqry_call(&con_l4id, MY_SBUF_SIZE, 0, 0, L4THREAD_DEFAULT_PRIO, &vc_l4id, CON_VFB, &_env)) enter_kdebug("Ouch, open vc failed"); if (con_vc_smode_call(&vc_l4id, CON_OUT, &dummy_l4id, &_env)) enter_kdebug("Ouch, setup vc failed"); if (con_vc_graph_gmode_call(&vc_l4id, &gmode, &xres, &yres, &bits_per_pixel, &bytes_per_pixel, &bytes_per_line, &accel_flags, &fn_x, &fn_y, &_env)) enter_kdebug("Ouch, graph_gmode failed"); if (bytes_per_pixel != 2) { printf("Graphics mode not 2 bytes/pixel, exiting\n"); con_vc_close_call(&vc_l4id, &_env); exit(0); } if (create_logo()) enter_kdebug("Ouch, logo creation failed"); while (!error) { if ((error = clear_screen())) enter_kdebug("Ouch, clear_screen failed"); if ((error = logo())) enter_kdebug("Ouch, logo failed"); l4_sleep(2000); } if (con_vc_close_call(&vc_l4id, &_env)) enter_kdebug("Ouch, close vc failed?!"); LOG("Finally closed vc"); LOG("Going to bed ..."); l4_sleep(-1); return 0; }
/** * tests all helper functions */ static char * test_helpers() { Logo input; char tmp[VAR_LENGTH+1], str[LINE_LENGTH]; char * trimmed; int ret, i; float output; printf("Testing %s\n", __FUNCTION__); /* test get_var() */ input = create_logo(0); /* this is essentially set_var("A", input->vars, 10); */ input->vars[0].data = 10; input->vars[0].used = 1; /* try to get A */ ret = get_var("A", input->vars, &output); mu_assert("error, ret != 0", ret == 0); mu_assert("error, A != 10", output == 10); /* try to get B which is not initialised */ ret = get_var("B", input->vars, &output); mu_assert("error, ret != VAR_ERR", ret == VAR_ERR); /* test set_var() */ set_var("A", input->vars, 20); set_var("B", input->vars, 40); mu_assert("error, A != 20", input->vars[0].data == 20.0); mu_assert("error, B != 40", input->vars[1].data == 40.0); /* setting the var should have flagged this var as used */ mu_assert("error, B is not initialised", input->vars[0].used == 1); /* test is_var() from A-Z */ for (i='A'; i<='Z'; i++) { tmp[0] = i; tmp[1] = '\0'; ret = is_var(tmp); mu_assert("error, ret != 1", ret == 1); } /* test bogus inputs */ /* small letter */ tmp[0] = 'a'; ret = is_var(tmp); mu_assert("error, ret != 0", ret == 0); /* number */ tmp[0] = '1'; ret = is_var(tmp); mu_assert("error, ret != 0", ret == 0); /* test is_op */ tmp[0] = '+'; ret = is_op(tmp); mu_assert("error, ret != 1", ret == 1); tmp[0] = '-'; ret = is_op(tmp); mu_assert("error, ret != 1", ret == 1); tmp[0] = '*'; ret = is_op(tmp); mu_assert("error, ret != 1", ret == 1); tmp[0] = '/'; ret = is_op(tmp); mu_assert("error, ret != 1", ret == 1); /* test bogus inputs */ tmp[0] = '='; ret = is_op(tmp); mu_assert("error, ret != 0", ret == 0); tmp[0] = '^'; ret = is_op(tmp); mu_assert("error, ret != 0", ret == 0); tmp[0] = '$'; ret = is_op(tmp); mu_assert("error, ret != 0", ret == 0); /* test trim_space() */ strcpy(str, "\t\tFD 30 \t\t "); trimmed = trim_space(str); mu_assert("error, trimmed != \"FD 30\"", strsame(trimmed, "FD 30")); strcpy(str, " \t \tDO A FROM 1 TO 8 { \t\t "); trimmed = trim_space(str); mu_assert("error, trimmed != \"DO A FROM 1 TO 8 {\"", strsame(trimmed, "DO A FROM 1 TO 8 {")); tear_down(input); return 0; }