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)); }
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; }
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; } } } }
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; }
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)); }
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); }
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)); }
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; } } } }
BrickBlock::BrickBlock() : Animation(Texture::ID::Mario, INTACT_NB_FRAME(), ANIM_DEFAULT_SPEED, INTACT_START_SRC(), FRAME_SIZE()) , currentState(INTACT) { }