Add OBC wrapper functions for conducting transactions in a single function call
Add wrapper functions for the functions in src/msp_obc_link.h such a transaction can be completed in a single function call instead of multiple invocations to msp_send_data_frame() and msp_recv_data_frame(). These wrappers are not intended as replacement for the existing functions, as clarified further on in the issue.
There should be a function that sends data over MSP in a single function call. An example prototype of this would be:
struct msp_response msp_obc_send(msp_link_t *lnk,
unsigned char opcode,
unsigned long len,
unsigned char *data);
There should also be a function that requests data over MSP in single function call. Its prototype could look simiar to the previous one:
struct msp_response msp_obc_recv(msp_link_t *lnk,
unsigned char opcode,
unsigned long *len,
unsigned char *buf,
unsigned long bufsize);
The issue with these functions are that they require the entire data to be sent/receive to be stored in RAM memory, prohibiting transfers of very large data. Thus these functions should only be seen as complements to the existing OBC interface, and not as replacements.
These functions could just act as wrappers around the existing interface, but a more optimized approach would be to bypass the existing msp_[send,recv]_data_frame() functions as they contain unnecessary conditional logic in this case.