Example #1
0
void test_move_card_should_not_change_stack_empty_stack_coordinates() {
  struct stack *origin, *destination;
  struct card *card[2];

  card_malloc(&card[0]);
  card_malloc(&card[1]);
  card_init(card[0]);
  card_init(card[1]);
  card_set(card[0], ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_0_BEGIN_X);
  card_set(card[1], KING, HEARTS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_1_BEGIN_X);

  stack_malloc(&origin);
  stack_malloc(&destination);
  stack_init(origin);
  stack_init(destination);
  stack_push(&origin, card[0]);
  stack_push(&destination, card[1]);
  move_card(&origin, &destination);

  assert(origin->card->frame->begin_y == MANEUVRE_BEGIN_Y);
  assert(origin->card->frame->begin_x == MANEUVRE_0_BEGIN_X);

  stack_free(origin);
  stack_free(destination);
}
void *video_hw_init (void)
{
	GraphicDevice *pGD = (GraphicDevice *)&mb862xx;

	printf ("Video: Fujitsu ");

	memset (pGD, 0, sizeof (GraphicDevice));

#if defined(CONFIG_VIDEO_CORALP)
	if (card_init () == 0) {
		return (NULL);
	}
#else
	/* Preliminary init of the onboard graphic controller,
	   retrieve base address */
	if ((pGD->frameAdrs = board_video_init ()) == 0) {
		printf ("Controller not found!\n");
		return (NULL);
	} else
		printf("Lime\n");
#endif

	de_init ();

#if !defined(CONFIG_VIDEO_CORALP)
	board_disp_init();
#endif

#if defined(CONFIG_LWMON5) && !(CONFIG_POST & CFG_POST_SYSMON)
	/* Lamp on */
	board_backlight_switch (1);
#endif

	return pGD;
}
Example #3
0
void test_move_card_from_non_stack_empty_stack_to_non_stack_empty_stack() {
  struct stack *origin, *destination;
  struct card *card[6];

  for (int i = 0; i < 6; i++) {
    card_malloc(&card[i]);
    card_init(card[i]);
    card_set(card[i], TWO + i, i % 5, i % 2, 99, 99);
  }

  stack_malloc(&origin);
  stack_malloc(&destination);
  stack_init(origin);
  stack_init(destination);
  for (int i = 0; i < 3; i++) {
    stack_push(&origin, card[i]);
  }
  for (int i = 3; i < 6; i++) {
    stack_push(&destination, card[i]);
  }
  move_card(&origin, &destination);

  assert(stack_length(origin) == 2);
  assert(stack_length(destination) == 4);
  assert(cards_equal(destination->card, card[2]));
  assert(cards_equal(destination->next->card, card[5]));

  stack_free(origin);
  stack_free(destination);
}
Example #4
0
void test_move_card_from_stack_empty_stack_to_non_stack_empty_stack() {
  struct stack *origin, *destination,
               *new_origin, *new_destination,
               *origin_duplicate, *destination_duplicate;
  struct card *card;

  card_malloc(&card);
  card_init(card);
  card_set(card, ACE, SPADES, EXPOSED, 0, 0);

  stack_malloc(&origin);
  stack_malloc(&destination);
  stack_init(origin);
  stack_init(destination);
  new_origin = origin;
  new_destination = destination;
  stack_push(&new_destination, card);
  origin_duplicate = stack_dup(origin);
  destination_duplicate = stack_dup(destination);
  move_card(&new_origin, &new_destination);

  assert(origin == new_origin);
  assert(stacks_equal(origin, origin_duplicate));
  assert(destination == new_destination);
  assert(stacks_equal(destination, destination_duplicate));

  stack_free(origin);
  stack_free(destination);
}
Example #5
0
//fill up the deck with cards that have value (suits and ranks)
void deck_fill(Deck * aDeckPtr){
  int rank;
  int suit;
  int card=FIRSTCARD;
  for(rank=2;rank<15;rank++){
    for(suit=1;suit<5;suit++){
      card_init(cards[card],suit,rank);
      card += 1;
    }
  }
}
Example #6
0
/* input: a dealer pointer, a shoe pointer
 * output: none
 * return: none
 * comments: resets the dealer
 */
void dealer_reset(dealer * foo, shoe * bar)
{
    card tmp;
    card_init(&tmp);
    while (!hand_empty(&foo->one))
    {
        tmp = hand_deq(&foo->one);
        take_card(bar, tmp);
    }
    foo->value = 0;
    hand_init(&foo->one);
}
Example #7
0
/**
 * initialize - Performs all initialization procedures
 *
 * Returns a CHARLIE_STAT_* constant that indicates the succes or
 * failure of the initialization.
 */
static uint8_t initialize(void)
{
    charlie.shutdown = FALSE;
    
    init_atmega();
    init_ports();
    debug_init_ports();
    
    rs232_init();
    spi_init_master();
    i2c_init();
    
    if (rtc_init()) {
        return CHARLIE_STAT_RTC_ERROR;
    }
    time_init();
    time_sync_to_realtime();
    
    sched_init();
    
    if (card_init()) {
        return CHARLIE_STAT_CARD_ERROR;
    }
    if (fsys_init()) {
        return CHARLIE_STAT_FSYS_ERROR;
    }
    if (fsys_check_read_only()) {
        return CHARLIE_STAT_FSYS_READONLY;
    }
    
    cfg_load();
    if (enc28j60_init(&cfg.mac_addr)) {
        return CHARLIE_STAT_NET_ERROR;
    }
    net_init();
    
    adc_init();
    sensors_init();
    pump_init();
    plants_init();
    
    sei();

    return CHARLIE_STAT_OK;
}
Example #8
0
void *video_hw_init (void)
{
	GraphicDevice *dev = &mb862xx;

	puts ("Video: Fujitsu ");

	memset (dev, 0, sizeof (GraphicDevice));

#if defined(CONFIG_VIDEO_CORALP)
	if (card_init () == 0)
		return NULL;
#else
	/*
	 * Preliminary init of the onboard graphic controller,
	 * retrieve base address
	 */
	if ((dev->frameAdrs = board_video_init ()) == 0) {
		puts ("Controller not found!\n");
		return NULL;
	} else {
		puts ("Lime\n");

		/* Set Change of Clock Frequency Register */
		HOST_WR_REG (GC_CCF, CONFIG_SYS_MB862xx_CCF);
		/* Delay required */
		udelay(300);
		/* Set Memory I/F Mode Register) */
		HOST_WR_REG (GC_MMR, CONFIG_SYS_MB862xx_MMR);
	}
#endif

	de_init ();

#if !defined(CONFIG_VIDEO_CORALP)
	board_disp_init ();
#endif

#if (defined(CONFIG_LWMON5) || \
     defined(CONFIG_SOCRATES)) && !(CONFIG_POST & CONFIG_SYS_POST_SYSMON)
	/* Lamp on */
	board_backlight_switch (1);
#endif

	return dev;
}
int main()
{
    int r;
    card_t* card;
    reader_list* readerList = (reader_list*)malloc(sizeof(reader_list));
    r = pcsc_detect_readers(readerList);
    if( !r==SC_SUCCESS)
    {
        printf("pcsc_detect_readers: %s\n",sc_strerror(r));
        return -1;
    }

    connect_card(readerList->root->reader, &card);
    card_init(card);

    csVerifyAdminPIN(card, (unsigned char*)"12345678", 8);
    csGenerateAndImportKeyPair(card, 2048);

    return 0;
}
Example #10
0
/* input: a dealer pointer, a shoe pointer
 * output: various dealer info
 * return: an int with the first cards value
 * comments: starts the dealer and shows the first card
 */
int dealer_start(dealer * foo, shoe * bar)
{
    int i;
    int rval = 0;
    card tmp;
    
    for (i = 0; i < 2; ++i)
    {
        card_init(&tmp);
        tmp = deal_card(bar);
        hand_enq(&foo->one, tmp);
        ++foo->cnt;
        foo->value += card_value(&tmp);
        if (i == 0)
        {
            fdprintf(OUT, "Dealer shows : ");
            card_print(&tmp);
            rval = card_value(&tmp);
            fdprintf(OUT, "\n");
        }
    }
    return rval;
}
Example #11
0
File: client.c Project: rsenn/tichu
/* -------------------------------------------------------------------------- *
 * Client Initialisation                                                      *
 * -------------------------------------------------------------------------- */
void client_init(void)
{
  int i;
  SDL_RWops *rwops;
  const sgVersion *sgver;
  const SDL_version *sdlver;
  
  client_log(STATUS, "Starte "PACKAGE" v"VERSION"...");
  
  /* GUI Library initialisieren */
  sgver = sgLinkedVersion();
  
  client_log(STATUS, "Initialisiere sgUI v%u.%u.%u",
             sgver->major, sgver->minor, sgver->patch);
  
  sgInit();
  
  /* Such-Pfade adden... Alle Dateien des Tichu-Clients 
     werden über die libsgui geöffnet 
   
     Auf windows starten wir immer aus dem Programm-Verzeichnis, wir müssen
     also nur unsere Unterverzeichnisse kennen:
   */
  sgAddFilePath("data");
  sgAddFilePath("sounds");
  sgAddFilePath("images");
  
  /* Auf *NIXes wird immer an einen festen Pfad installiert: */
#ifdef DATADIR
    sgAddFilePath(DATADIR "/data");
    sgAddFilePath(DATADIR "/sounds");
    sgAddFilePath(DATADIR "/images");
#endif
  
  /* Vielleicht sollten wir die folgenden Pfade 
     nur für debug-builds  absuchen (#ifdef DEBUG) */
  sgAddFilePath("client/data");
  sgAddFilePath("client/sounds");
  sgAddFilePath("client/images");
  
  sgAddFilePath("tichu/client/data");
  sgAddFilePath("tichu/client/sounds");
  sgAddFilePath("tichu/client/images");
  
  sgAddFilePath("../data");
  sgAddFilePath("../sounds");
  sgAddFilePath("../images");

  client_path = sgGetFilePath();
  
  /* cursors themes laden */
  sgOpenCursorThemes();

  /* Konfigurationsdatei öffnen */
  client_ini = ini_open(CLIENT_INI, INI_READ);
  
#ifdef DEBUG
  ini_dump(client_ini);
#endif /* DEBUG */
  
  if(!client_ini)
    client_log(ERROR, "Fehler beim Öffnen der Konfigurationsdatei %s!", 
               CLIENT_INI);

  /* SDL Initialisation */
  sdlver = SDL_Linked_Version();
  
  client_log(STATUS, "Initialisiere SDL v%u.%u.%u",
             sdlver->major, sdlver->minor, sdlver->patch);
             
  if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_NOPARACHUTE))
    client_log(ERROR, "Kann SDL nicht initialisieren!");
  
  client_subsystems = SDL_WasInit(SDL_INIT_EVERYTHING);
  
  client_getmodes();
  
  client_configure();
  
#if MDEBUG_ENABLE
  mdebug_init();
#endif /* MDEBUG_ENABLE */
  
  /* Netzwerk initialisieren */
  net_init();
  
  /* Module welche auf SDL basieren initialisieren */
  sound_init();
//  card_init("data/cards.ini", "data/cards-alpha.png");

  /* net read/error funktionen */
  net_register(NET_READ, client_event);
  net_register(NET_ERROR, client_event);

#ifdef WIN32
  /* Im Windows-Taskbar sieht ein 32x32 Icon am besten aus */  
  client_load_icon("dragon-32.png");
#else
  /* Unter Fluxbox und XFCE macht sich ein 16x16 Icon am Besten :P
   *
   * Oooops, unter der neuen Fluxbox mit all dem Antialias Gewixe
   * aber nicht, dort wäre auch ein 32x32 angebracht.
   * 
   * Aber wie finden wir raus welchen WM wir runnen auf X11?
   * Naja, vorerst einmal scheissegal :P
   */
  client_load_icon("dragon-16.png");
#endif /* WIN32 */

  /* Window-Manager Titel setzen */
  SDL_WM_SetCaption("Tichu SDL Client v"VERSION, NULL);

  /* Fonts laden und der GUI übergeben */
  for(i = 0; i < 3; i++)
  {
    rwops = client_open_rwops(client_config.font[i], CLIENT_READ);
    client_font[i] = sgLoadFontRWops(rwops);
  }
  
  /* Einen Puffer für die Kommandozeile und Chatkonsole reservieren */
  client_buffer = strdup(client_ascii);
  
  if(sound_status & SOUND_AVAIL)
  {
    sound_configure(client_ini);
    
    /* Soundeffekte laden */
    ui_loadsounds();
    
    /* Soundtracks laden */
    sound_mus_scan();
  
    if(sound_playlist.head)
      sound_mus_play((struct sound_mus *)sound_playlist.head);
  }
  
  /* Kartendaten laden */
  card_configure(client_ini);
  card_init();
  
  /* Fächerkonfiguration laden */
  fan_configure(client_ini);
}
int main2()
{


    // Seed RNG


    // Generate Key Pair
    ERR_load_crypto_strings();
    char error[400];

    int modulus_length = 2048; // bits

    unsigned long e = 65537;
    const char* e_hex = "100001";
    RSA *rsa = NULL;
    rsa = RSA_generate_key(modulus_length, e, NULL /*keygen_progress*/, NULL);
    if (rsa == NULL)
    {
        ERR_error_string(ERR_get_error(), error);
        printf("Failed to generate RSA key pair.OpenSSL error:\n %s\n", error);
        return -1;
    }

    unsigned char *n_hex = (unsigned char*)calloc(1, 2*2048/8);
    unsigned char *d_hex = (unsigned char*)calloc(1, 2*2048/8);
    unsigned char *p_hex = (unsigned char*)calloc(1, 2*2048/8);
    unsigned char *q_hex = (unsigned char*)calloc(1, 2*2048/8);
    if (!(  n_hex = (unsigned char*) BN_bn2hex((const BIGNUM*)rsa->n)  ))
    {
        printf("Modulo parsing error\n");
        return -1;
    }
    if (!(  d_hex = (unsigned char*) BN_bn2hex((const BIGNUM*)rsa->d)  ))
    {
        printf("Private exponent parsing error\n");
        return -1;
    }
    if (!(  p_hex = (unsigned char*) BN_bn2hex((const BIGNUM*)rsa->q)  ))
    {
        printf("Private exponent parsing error\n");
        return -1;
    }
    if (!(  q_hex = (unsigned char*) BN_bn2hex((const BIGNUM*)rsa->p)  ))
    {
        printf("Private exponent parsing error\n");
        return -1;
    }
    printf("Public modulus:\n\t%s\n", n_hex);
    printf("Private exponent:\n\t%s\n", d_hex);
    printf("Prime p:\n\t%s\n", p_hex);
    printf("Prime q:\n\t%s\n", q_hex);


    // Import Key Pair
    sc_cardctl_openpgp_keystore_info_t key_info;
    key_info.keytype = SC_OPENPGP_KEY_ENCR;
    key_info.keyformat = SC_OPENPGP_KEYFORMAT_STD;
    
    /* n */
    unsigned char* n_bin = (unsigned char*)calloc(1, modulus_length/8);
    key_info.n_len = BN_bn2bin(rsa->n, n_bin);
    key_info.n = n_bin;
 
    /* e */
    key_info.e = (u8*)calloc(1, 4);   
    hex_to_bin(e_hex, key_info.e, &(key_info.e_len));

    /* p */
    unsigned char* p_bin = (unsigned char*)calloc(1, strlen((const char*)p_hex)/2);
    key_info.p_len = BN_bn2bin(rsa->p, p_bin);
    key_info.p = p_bin;

    /* q */
    unsigned char* q_bin = (unsigned char*)calloc(1, strlen((const char*)q_hex)/2);
    key_info.q_len = BN_bn2bin(rsa->q, q_bin);
    key_info.q = q_bin;

    
    printf("Lengths: n = %lu\ne= %lu\np = %lu\nq = %lu\n",key_info.n_len, key_info.e_len, key_info.p_len, key_info.q_len);
    // List readers
    int r;
    card_t* card;
    reader_list* readerList = (reader_list*)malloc(sizeof(reader_list));
    r = pcsc_detect_readers(readerList);
    if( !r==SC_SUCCESS)
    {
        printf("pcsc_detect_readers: %s\n",sc_strerror(r));
        return -1;
    }

    connect_card(readerList->root->reader, &card);
    card_init(card);

    csVerifyAdminPIN(card, (unsigned char*)"12345678", 8);

    if( (r = pgp_store_key(card, &key_info)) != 0)
        printf("pgp_store_key error: %d\n",r);

    // Cleanups
    free(rsa);
    free(n_bin);
    free(n_hex);
    free(d_hex);

    return 0;
}
Example #13
0
int main()
{
	struct deck my_deck;
	struct card my_card,card_result;
	int res,i;

	#define CHECK_DECK_OP() \
	if ( res != DECK_OK ) {\
		deck_get_op_result(res);\
		deck_print_cards_cnt(&my_deck);\
	}

	//10 cards at first
	res = deck_init(&my_deck,10);
	CHECK_DECK_OP();

	//look in empty deck
	printf("look in empty deck test\n");
	res =deck_look(&my_deck,&my_card);
	CHECK_DECK_OP();
	card_print(&my_card);
	printf("look in empty deck test end\n");

	printf("draw from empty deck test\n");
	res = deck_draw(&my_deck,&my_card);
	CHECK_DECK_OP();
	card_print(&my_card);
	printf("draw from empty deck test end\n");

	printf("push in deck test\n");

	card_init(&my_card,"test",1,1,1);
	res =deck_push(&my_deck,&my_card);
	CHECK_DECK_OP();

	res =deck_look(&my_deck,&card_result);
	CHECK_DECK_OP();
	card_print(&card_result);

	printf("push in deck test end\n");

	printf("push five cards and draw 5 cards test\n");
	for(  i =0; i < 5; i ++ ){
		card_init(&my_card,"test",i,i,i);
		res = deck_push(&my_deck,&my_card);
		CHECK_DECK_OP();
	}
	printf("get last 10 cards from deck\n");
	for (  i =0; i < 10; i++ ){
		res = deck_draw(&my_deck,&card_result);
		CHECK_DECK_OP();
		card_print(&card_result);
	}

	printf("push five cards and draw 10 cards test end\n");

	printf("reallocation test\n");

	printf("old size [%d]\n",deck_get_size(&my_deck));
	for (  i =0; i < 15; i++ ){
		card_init(&my_card,"test",i,i,i);
		res = deck_push(&my_deck,&my_card);
		CHECK_DECK_OP();
	}
	printf("new size [%d]\n",deck_get_size(&my_deck));

	printf("reallocation test end\n");




	printf("Deck deinit\n");
	deck_deinit(&my_deck);



	return 0;
}