diff --git a/lib/roles/device.js b/lib/roles/device.js index d94d1fa7..312fb342 100644 --- a/lib/roles/device.js +++ b/lib/roles/device.js @@ -401,6 +401,12 @@ module.exports = function(options) { log.error('keyPress failed', err.stack) }) }) + .on(wire.LogcatApplyFiltersMessage, function(channel, message) { + services.logcat.resetFilters().excludeAll() + message.filters.forEach(function(filter) { + services.logcat.include(filter.tag, filter.priority) + }) + }) .on(wire.ShellCommandMessage, function(channel, message) { log.info('Running shell command "%s"', message.command.join(' ')) adb.shellAsync(options.serial, message.command) diff --git a/lib/wire/wire.proto b/lib/wire/wire.proto index eee4ef71..75db4495 100644 --- a/lib/wire/wire.proto +++ b/lib/wire/wire.proto @@ -26,6 +26,8 @@ enum MessageType { KeyUpMessage = 24; KeyPressMessage = 25; DeviceRegisteredMessage = 26; + DeviceLogcatEntryMessage = 27; + LogcatApplyFiltersMessage = 28; } message Envelope { @@ -198,6 +200,27 @@ message KeyPressMessage { required uint32 key = 1; } +// Output + +message DeviceLogcatEntryMessage { + required string serial = 1; + required double date = 2; + required uint32 pid = 3; + required uint32 tid = 4; + required uint32 priority = 5; + required string tag = 6; + required string message = 7; +} + +message LogcatFilter { + required string tag = 1; + required uint32 priority = 2; +} + +message LogcatApplyFiltersMessage { + repeated LogcatFilter filters = 1; +} + // Commands message ShellCommandMessage {