tma: first pass at TmaServiceManager

This commit is contained in:
Michael Scire
2018-12-05 04:16:48 -08:00
parent bb48e33074
commit bf7dc84893
11 changed files with 595 additions and 22 deletions

View File

@@ -43,6 +43,7 @@ class TmaPacket {
private:
std::unique_ptr<u8[]> buffer = std::make_unique<u8[]>(MaxPacketSize);
u32 offset = 0;
HosMessageQueue *free_queue = nullptr;
Header *GetHeader() const {
return reinterpret_cast<Header *>(buffer.get());
@@ -95,6 +96,14 @@ class TmaPacket {
}
}
HosMessageQueue *GetFreeQueue() const {
return this->free_queue;
}
void SetFreeQueue(HosMessageQueue *queue) {
this->free_queue = queue;
}
void SetChecksums() {
Header *hdr = GetHeader();
if (hdr->body_len) {
@@ -161,6 +170,10 @@ class TmaPacket {
this->offset = 0;
}
void SetBodyLength() {
GetHeader()->body_len = this->offset;
}
TmaConnResult Write(const void *data, size_t size) {
if (size > GetBodyAvailableLength()) {
return TmaConnResult::PacketOverflow;