Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

#!/usr/bin/env python 

# encoding: utf-8 

 

# Copyright (C) 2015 Chintalagiri Shashank 

# 

# This file is part of tendril. 

# 

# This program is free software: you can redistribute it and/or modify 

# it under the terms of the GNU Affero General Public License as published by 

# the Free Software Foundation, either version 3 of the License, or 

# (at your option) any later version. 

# 

# This program is distributed in the hope that it will be useful, 

# but WITHOUT ANY WARRANTY; without even the implied warranty of 

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 

# GNU Affero General Public License for more details. 

# 

# You should have received a copy of the GNU Affero General Public License 

# along with this program.  If not, see <http://www.gnu.org/licenses/>. 

 

""" 

Docstring for __init__.py 

""" 

 

import os 

 

from tendril.gedaif.conffile import ConfigsFile 

from tendril.gedaif.conffile import NoGedaProjectError 

 

from tendril.entityhub import serialnos 

from tendril.entityhub import projects 

 

from tendril.utils.db import with_db 

 

from tendril.utils.config import INSTANCE_ROOT 

from tendril.utils.fsutils import import_ 

 

from tendril.utils import log 

logger = log.get_logger(__name__, log.DEFAULT) 

 

macs_folder = os.path.join(INSTANCE_ROOT, 'macs') 

 

 

@with_db 

def get_mac_from_sno(serialno=None, session=None): 

    devicetype = serialnos.get_serialno_efield(sno=serialno) 

 

    try: 

        projectfolder = projects.cards[devicetype] 

    except KeyError: 

        raise AttributeError("Project for " + devicetype + " not found.") 

 

    try: 

        gcf = ConfigsFile(projectfolder) 

        logger.debug("Using gEDA configs file from : " + 

                     projects.cards[devicetype]) 

    except NoGedaProjectError: 

        raise AttributeError("gEDA project for " + devicetype + " not found.") 

 

    modname = gcf.mactype 

    funcname = 'get_mac_from_sno' 

 

    mod = import_(os.path.join(macs_folder, modname)) 

    func = getattr(mod, funcname) 

    return func(serialno=serialno, session=session) 

 

 

@with_db 

def get_sno_from_mac(mac=None, mactype=None, devicetype=None, session=None): 

 

    if mactype is None: 

        try: 

            projectfolder = projects.cards[devicetype] 

        except KeyError: 

            raise AttributeError("Project for " + devicetype + " not found.") 

 

        try: 

            gcf = ConfigsFile(projectfolder) 

            logger.debug("Using gEDA configs file from : " + 

                         projects.cards[devicetype]) 

        except NoGedaProjectError: 

            raise AttributeError( 

                "gEDA project for " + devicetype + " not found." 

            ) 

 

        modname = gcf.mactype 

    else: 

        modname = mactype 

    funcname = 'get_sno_from_mac' 

 

    mod = import_(os.path.join(macs_folder, modname)) 

    func = getattr(mod, funcname) 

    return func(mac=mac, session=session) 

 

 

def get_device_mac(mactype='QASCv1', **kwargs): 

    if mactype == 'QASCv1': 

        funcname = 'get_device_mac' 

        modname = mactype 

        params = {} 

    elif mactype == 'FT232DEVICEv1': 

        funcname = 'get_device_mac' 

        modname = mactype 

        params = {'description': kwargs['description']} 

    else: 

        raise ValueError("Unrecognized MACTYPE") 

 

    mod = import_(os.path.join(macs_folder, modname)) 

    func = getattr(mod, funcname) 

    return func(**params) 

 

 

def get_sno_from_device(mactype='QASCv1', **kwargs): 

    mac = get_device_mac(mactype, **kwargs) 

    return get_sno_from_mac(mac=mac, mactype=mactype)