tma: Implement example set:sys getter service

This commit is contained in:
Michael Scire
2018-12-05 13:18:31 -08:00
parent 24be9ffc57
commit 61ad4e0991
10 changed files with 184 additions and 4 deletions

View File

@@ -20,9 +20,16 @@ def main(argc, argv):
print 'Waiting for connection...'
c.wait_connected()
print 'Connected!'
c.intf.send_packet(Packet().set_service(ServiceId.ATMOSPHERE_TEST_SERVICE).set_task(0x01000000).write_u32(0x40))
c.intf.send_packet(Packet().set_service(ServiceId.SETTINGS_SERVICE).set_task(0x01000000).set_cmd(0).write_str('lm').write_str('sd_card_log_output_directory'))
resp = c.intf.read_packet()
print resp.body
success = resp.read_u8() != 0
print 'Succeeded: %s' % str(success)
if success:
size = resp.read_u32()
value = resp.body[resp.offset:resp.offset+size]
print 'Value Size: 0x%x' % size
print 'Value: %s' % repr(value)
return 0
if __name__ == '__main__':

View File

@@ -70,6 +70,8 @@ class Packet():
self.offset = 0
return self
def write_str(self, s):
if s[-1] != '\x00':
s += '\x00'
self.body += s
self.body_len += len(s)
return self
@@ -94,6 +96,8 @@ class Packet():
while self.body[self.offset] != '\x00' and self.offset < self.body_len:
s += self.body[self.offset]
self.offset += 1
if self.offset < self.body_len and self.body[self.offset] == '\x00':
self.offset += 1
def read_u8(self):
x, = up('<B', self.body[self.offset:self.offset+1])
self.offset += 1

View File

@@ -25,5 +25,5 @@ USB_CONNECT = hash("USBConnect")
USB_DISCONNECT = hash("USBDisconnect")
ATMOSPHERE_TEST_SERVICE = hash("AtmosphereTestService")
SETTINGS_SERVICE = hash ("SettingsService")