Coverage for linuxpy/codegen/midi.py: 0%

10 statements  

« prev     ^ index     » next       coverage.py v7.6.8, created at 2025-05-27 13:54 +0200

1# 

2# This file is part of the linuxpy project 

3# 

4# Copyright (c) 2023 Tiago Coutinho 

5# Distributed under the GPLv3 license. See LICENSE for more info. 

6 

7import pathlib 

8 

9from linuxpy.codegen.base import CEnum, run 

10 

11HEADERS = [ 

12 "/usr/include/sound/asequencer.h", 

13] 

14 

15 

16TEMPLATE = """\ 

17# 

18# This file is part of the linuxpy project 

19# 

20# Copyright (c) 2023 Tiago Coutinho 

21# Distributed under the GPLv3 license. See LICENSE for more info. 

22 

23# This file has been generated by {name} 

24# Date: {date} 

25# System: {system} 

26# Release: {release} 

27# Version: {version} 

28 

29import enum 

30 

31from linuxpy.ioctl import IOR as _IOR, IOW as _IOW, IOWR as _IOWR 

32from linuxpy.ctypes import u8, u16, cuint, cint, cchar 

33from linuxpy.ctypes import Struct, Union, POINTER, cvoidp 

34 

35 

36class ClientType(enum.IntEnum): 

37 NO_CLIENT = 0 

38 USER = 1 

39 KERNEL = 2 

40 

41 

42{enums_body} 

43 

44 

45snd_seq_tick_time_t = cuint 

46 

47 

48class snd_seq_real_time(Struct): 

49 _fields_ = [ 

50 ("tv_sec", cuint), 

51 ("tv_nsec", cuint), 

52 ] 

53 

54 

55# Defined in /usr/include/sound/asound.h 

56class snd_timer_id(Struct): 

57 _fields_ = [ 

58 ("dev_class", cint), 

59 ("dev_sclass", cint), 

60 ("card", cint), 

61 ("device", cint), 

62 ("subdevice", cint), 

63 ] 

64 

65 

66{structs_body} 

67 

68 

69{iocs_body}""" 

70 

71 

72# macros from #define statements 

73MACRO_ENUMS = [ 

74 CEnum("EventLength", "SNDRV_SEQ_EVENT_LENGTH_"), 

75 CEnum("TimeStamp", "SNDRV_SEQ_TIME_STAMP_", klass="IntFlag"), 

76 CEnum("TimeMode", "SNDRV_SEQ_TIME_MODE_", klass="IntFlag"), 

77 CEnum("Priority", "SNDRV_SEQ_PRIORITY_", klass="IntFlag"), 

78 CEnum("EventType", "SNDRV_SEQ_EVENT_"), 

79 CEnum("ClientNumber", "SNDRV_SEQ_CLIENT_"), 

80 CEnum("Filter", "SNDRV_SEQ_FILTER_", klass="IntFlag"), 

81 CEnum("Remove", "SNDRV_SEQ_REMOVE_", klass="IntFlag"), 

82 CEnum("PortSystem", "SNDRV_SEQ_PORT_SYSTEM_", klass="IntFlag"), 

83 CEnum("PortCapability", "SNDRV_SEQ_PORT_CAP_", klass="IntFlag"), 

84 CEnum("PortType", "SNDRV_SEQ_PORT_TYPE_", klass="IntFlag"), 

85 CEnum("PortFlag", "SNDRV_SEQ_PORT_FLG_", klass="IntFlag"), 

86 CEnum("QueueFlag", "SNDRV_SEQ_QUEUE_FLG_", klass="IntFlag"), 

87 CEnum("Timer", "SNDRV_SEQ_TIMER_"), 

88 CEnum("QuerySubscription", "SNDRV_SEQ_QUERY_SUBS_"), 

89 CEnum("IOC", "SNDRV_SEQ_IOCTL_"), 

90] 

91 

92 

93this_dir = pathlib.Path(__file__).parent 

94 

95 

96def main(output=this_dir.parent / "midi" / "raw.py"): 

97 run(__name__, HEADERS, TEMPLATE, MACRO_ENUMS, output=output) 

98 

99 

100if __name__ == "__main__": 

101 main()