void iso_pdu1_rx(iso_m *m_receive) { iso_m m; byte i; byte da; pgn request_pgn; if (m_receive->bits.pf1 == PF1(ISO_REQUEST_PGN) && m_receive->bits.pf2 == PF2(ISO_REQUEST_PGN)) { da = m_receive->bits.ps1<<7 | m_receive->bits.ps2; if (da == 255 || da == source_address){ // something has been requested of us //m_receive->bits.data = &m_receive+4; request_pgn.byte_pgn[0] = 0; request_pgn.byte_pgn[1] = *((byte *) m_receive+6); request_pgn.byte_pgn[2] = *((byte *) m_receive+5); request_pgn.byte_pgn[3] = *((byte *) m_receive+4); //request_pgn = (byte *) m_receive+1; putc1(0xab); putc1(0xab); //puts1(m_receive, 7,0); //puts1((byte *) m_receive+1,6,0); puts1(request_pgn.byte_pgn, 4,0); switch (request_pgn.dw_pgn) { case ((dword) ADDRESS_CLAIM_PGN): toggle_led(LED2); address_claim_message(); break; case ((dword) PRODUCT_INFORMATION_PGN): toggle_led(LED1); break; } } } // if address claim and this source address, then send out a new address claim if (m_receive->bits.sa == source_address) { // quick first check m.bits.priority = 6; ISO_M(ADDRESS_CLAIM_PGN); if (m_receive->dw_id == m.dw_id) { // if my name < received name I get to keep my source address for(i=0;i<ADDRESS_CLAIM_PGN_LENGTH;i++) { if (name[i] < m_receive->bits.data[i]) break; if (name[i] > m_receive->bits.data[i]) { generate_new_source_address(); break; } if (i == ADDRESS_CLAIM_PGN_LENGTH-1) generate_new_source_address(); } address_claim_message(); } } }
void print_to_serial(byte *can_buf) { byte data_length; byte i; data_length = (can_buf[12]&0xF) + 4; // 4 bytes for id field /* if (ascii_out) { rprintf("%02X", data_length); for(i=0;i<data_length;i++) rprintf("%02X", can_buf[i]); rprintf("\n"); } else {*/ // putc1(0xAB); // putc1(0xCD); putc1(data_length); puts1(can_buf, (int) data_length,0); // from the id field forward through the bytes putcontrol1(NEWLINE_AND_LINEFEED); // } }
void f(void *s){ int i; for(i = 0; i < N; i++){ puts1((char*)s); } }