Lines Matching full:frame

274 static void can_sja1000_read_frame(const struct device *dev, struct can_frame *frame)  in can_sja1000_read_frame()  argument
280 memset(frame, 0, sizeof(*frame)); in can_sja1000_read_frame()
285 frame->flags |= CAN_FRAME_RTR; in can_sja1000_read_frame()
288 frame->dlc = CAN_SJA1000_FRAME_INFO_DLC_GET(info); in can_sja1000_read_frame()
289 if (frame->dlc > CAN_MAX_DLC) { in can_sja1000_read_frame()
290 LOG_ERR("RX frame DLC %u exceeds maximum (%d)", frame->dlc, CAN_MAX_DLC); in can_sja1000_read_frame()
295 frame->flags |= CAN_FRAME_IDE; in can_sja1000_read_frame()
305 frame->id = id; in can_sja1000_read_frame()
307 if ((frame->flags & CAN_FRAME_RTR) == 0U) { in can_sja1000_read_frame()
308 for (i = 0; i < frame->dlc; i++) { in can_sja1000_read_frame()
309 frame->data[i] = can_sja1000_read_reg(dev, CAN_SJA1000_EFF_DATA + in can_sja1000_read_frame()
318 frame->id = id; in can_sja1000_read_frame()
320 if ((frame->flags & CAN_FRAME_RTR) == 0U) { in can_sja1000_read_frame()
321 for (i = 0; i < frame->dlc; i++) { in can_sja1000_read_frame()
322 frame->data[i] = can_sja1000_read_reg(dev, CAN_SJA1000_SFF_DATA + in can_sja1000_read_frame()
329 void can_sja1000_write_frame(const struct device *dev, const struct can_frame *frame) in can_sja1000_write_frame() argument
335 info = CAN_SJA1000_FRAME_INFO_DLC_PREP(frame->dlc); in can_sja1000_write_frame()
337 if ((frame->flags & CAN_FRAME_RTR) != 0) { in can_sja1000_write_frame()
341 if ((frame->flags & CAN_FRAME_IDE) != 0) { in can_sja1000_write_frame()
347 if ((frame->flags & CAN_FRAME_IDE) != 0) { in can_sja1000_write_frame()
348 id = frame->id; in can_sja1000_write_frame()
358 if ((frame->flags & CAN_FRAME_RTR) == 0U) { in can_sja1000_write_frame()
359 for (i = 0; i < frame->dlc; i++) { in can_sja1000_write_frame()
361 frame->data[i]); in can_sja1000_write_frame()
365 id = frame->id; in can_sja1000_write_frame()
371 if ((frame->flags & CAN_FRAME_RTR) == 0U) { in can_sja1000_write_frame()
372 for (i = 0; i < frame->dlc; i++) { in can_sja1000_write_frame()
374 frame->data[i]); in can_sja1000_write_frame()
380 int can_sja1000_send(const struct device *dev, const struct can_frame *frame, k_timeout_t timeout, in can_sja1000_send() argument
387 if (frame->dlc > CAN_MAX_DLC) { in can_sja1000_send()
388 LOG_ERR("TX frame DLC %u exceeds maximum (%d)", frame->dlc, CAN_MAX_DLC); in can_sja1000_send()
392 if ((frame->flags & ~(CAN_FRAME_IDE | CAN_FRAME_RTR)) != 0) { in can_sja1000_send()
393 LOG_ERR("unsupported CAN frame flags 0x%02x", frame->flags); in can_sja1000_send()
419 can_sja1000_write_frame(dev, frame); in can_sja1000_send()
572 struct can_frame frame; in can_sja1000_handle_receive_irq() local
578 can_sja1000_read_frame(dev, &frame); in can_sja1000_handle_receive_irq()
581 if ((frame.flags & CAN_FRAME_RTR) == 0U) { in can_sja1000_handle_receive_irq()
588 if (can_frame_matches_filter(&frame, &data->filters[i].filter)) { in can_sja1000_handle_receive_irq()
591 callback(dev, &frame, data->filters[i].user_data); in can_sja1000_handle_receive_irq()
779 /* Set up acceptance code and mask to match any frame (software filtering) */ in can_sja1000_init()