Ejemplo n.º 1
0
static void transmit_frame(MSG *msg, FRAMEKIND kind, size_t length, int seqno)
{
    FRAME       f;
    int		link = 1;

    f.kind      = kind;
    f.seq       = seqno;
    f.checksum  = 0;
    f.len       = length;

    switch (kind) {
    case ACK :
	CHECK(CNET_set_wlancolour(link, "blue"));
	break;

    case DATA: {
	CnetTime	timeout;

	CHECK(CNET_set_wlancolour(link, "red"));
        memcpy(&f.msg, (char *)msg, length);

	timeout = (FRAME_SIZE(f)*(CnetTime)8000000 / linkinfo[link].bandwidth +
				linkinfo[link].propagationdelay);
	timeout	= 300000;

        lasttimer = CNET_start_timer(EV_TIMER1, 3 * timeout, 0);
	break;
      }
    }
    length      = FRAME_SIZE(f);
    f.checksum  = CNET_ccitt((unsigned char *)&f, length);
    CHECK(CNET_write_physical_reliable(link, (char *)&f, &length));
}
Ejemplo n.º 2
0
int pn532_write_frame(struct pn532_dev_s *dev, struct pn532_frame *f)
{
  int res = OK;

  pn532_lock(dev->spi);
  pn532_select(dev);
  nxsig_usleep(2000);

  SPI_SEND(dev->spi, PN532_SPI_DATAWRITE);
  SPI_SNDBLOCK(dev->spi, f, FRAME_SIZE(f));
  pn532_deselect(dev);
  pn532_unlock(dev->spi);
  tracetx("WriteFrame", (uint8_t *) f, FRAME_SIZE(f));

  /* Wait ACK frame */

  res = pn532_wait_rx_ready(dev, 30);
  if (res == OK)
    {
      if (!pn532_read_ack(dev))
        {
          pn532err("ERROR: command FAILED\n");
          res = -EIO;
        }
    }

  return res;
}
Ejemplo n.º 3
0
LevelAssets::LevelAssets()
{
	//Start the animation on creation
	this->Play();
	//Make it loop
	this->SetIsLooping(true);



	const int HEIGHT = 16;
	const int WIDTH = 16;

	int map[WIDTH][HEIGHT] = {
		0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
		0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
		0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
		0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
		0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
		0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
		0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
		0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
		0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
		0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
		0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
		0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
		0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
		1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
		1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
		0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
	};

	for (int i = 0; i < WIDTH; ++i)
	{
		for (int j = 0; j < HEIGHT; ++j)
		{
			Sprite* temp = nullptr;
			switch (map[j][i])
			{
			case 0:
				break;
			case 1:
				temp = new Sprite(Texture::ID::Level1n1, GROUND(), FRAME_SIZE());
				temp->SetPosition(i * FRAME_SIZE().x, j * FRAME_SIZE().y);
				
				break;
			default:
				break;
			}
		}
	}
}
Ejemplo n.º 4
0
static void set_timer(FRAME frame)
{
    CnetTimerID timerID;
    CnetTime timeout;
    int link = frame.link;
    int seqNum = frame.seq;

    // CALCULATE TIMEOUT VALUE BASED ON BANDWIDTH + PROP DELAY
    timeout = FRAME_SIZE(frame)*((CnetTime)MAGIC_NUM / linkinfo[link].bandwidth);
    timeout += linkinfo[link].propagationdelay;

    // START SPECIFIC TIMER FOR CORRECT LINK. EVERY LINK USES A SEPERATE
    // TIMER QUEUE
    switch (link)
    {
        case 1:
            timerID = CNET_start_timer(EV_TIMER1, T_MOD * timeout, (CnetData)seqNum);
            break;
        case 2:
            timerID = CNET_start_timer(EV_TIMER2, T_MOD * timeout, (CnetData)seqNum);
            break;
        case 3:
            timerID = CNET_start_timer(EV_TIMER3, T_MOD * timeout, (CnetData)seqNum);
            break;
        case 4:
            timerID = CNET_start_timer(EV_TIMER4, T_MOD * timeout, (CnetData)seqNum);
            break;
    }

    // STORE TIMER ID IN THE TIMER ARRAY FOR LATER REFERENCE
    timers[link - 1][seqNum] = timerID;
}
Ejemplo n.º 5
0
static void transmit_frame(FRAME frame)
{
    size_t frameLength;

    if (frame.kind == DL_DATA)          // DATA FRAME
    {
        // SET THE TIMER PRIOR TO SENDING
        printf("DATA TRANSMITTED\nTO:\t%s\n", nodenames[frame.destNode]);
        set_timer(frame);
    }
    else                                // ACK FRAME
    {
        // NO TIMER, SIMPLY SEND THE FRAME OUT
        printf("\nACK TRANSMITTED\n");
    }

    printf("VIA LINK:\t%d\nSEQ NO:\t%d\n\n", frame.link, frame.seq);

    // CALCULATE THE CHECKSUM AND ADD TO THE FRAME
    frame.checksum = 0;
    frameLength = FRAME_SIZE(frame);
    frame.checksum = CNET_ccitt((unsigned char *)&frame, frameLength);

    // SEND FRAME VIA PHYSICAL LAYER
    CHECK(CNET_write_physical(frame.link, (char *)&frame,  &frameLength));
}
Ejemplo n.º 6
0
BBMan::BBMan()
	: Animation(Texture::ID::BBMan, IDLE_NB_FRAME(), FRAME_RATE, IDLE_START_SRC(), FRAME_SIZE())
	, currentState(IDLE)
	, currentX(0)
	, currentY(characterY)
	, currenTime(0)
	, characterX(425)
	, characterY(334)
	, flipped(false)
	, isJumping(true)
	, gravity(1.0f)
	, jump(1.7f)
	, verticalVelocity(0)
	, dir(1)
{
	BBs::pool = new Pool<BBs>(10);
	Scale(2);
	SetDstFrame(characterX, characterY, 64, 64);
	currentX = characterX;
	currentY = characterY;

	////Start the animation on creation
	this->Play();
	//Make it loop
	this->SetIsLooping(true);
}
Ejemplo n.º 7
0
static void pn532_writecommand(struct pn532_dev_s *dev, uint8_t cmd)
{
  char cmd_buffer[16];
  struct pn532_frame *f = (struct pn532_frame *) cmd_buffer;

  pn532_frame_init(f, cmd);
  pn532_frame_finish(f);

  pn532_lock(dev->spi);
  pn532_select(dev);
  nxsig_usleep(10000);

  SPI_SEND(dev->spi, PN532_SPI_DATAWRITE);
  SPI_SNDBLOCK(dev->spi, f, FRAME_SIZE(f));

  pn532_deselect(dev);
  pn532_unlock(dev->spi);

  tracetx("command sent", (uint8_t *) f, FRAME_SIZE(f));
}
Ejemplo n.º 8
0
Background::Background()
{
	const int HEIGHT = 16;
	const int WIDTH = 16;
	
	int map[WIDTH][HEIGHT] = {
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	};
	
	for (int i = 0; i < WIDTH; ++i)
	{
		for (int j = 0; j < HEIGHT; ++j)
		{
			Sprite* temp = nullptr;
			switch (map[j][i])
			{
			case 0:
				temp = new Sprite(Texture::ID::Level1n1, SKY_SRC(), FRAME_SIZE());
				temp->SetPosition(i * FRAME_SIZE().x, j * FRAME_SIZE().y);
				break;
			default:
				break;
			}
		}
	}
}
Ejemplo n.º 9
0
BrickBlock::BrickBlock()
	: Animation(Texture::ID::Mario, INTACT_NB_FRAME(), ANIM_DEFAULT_SPEED, INTACT_START_SRC(), FRAME_SIZE())
	, currentState(INTACT)
{

}