GithubHelp home page GithubHelp logo

denizt / cheetahwatch Goto Github PK

View Code? Open in Web Editor NEW

This project forked from thepatrick/cheetahwatch

0.0 1.0 0.0 2.26 MB

A utility for monitoring and controlling Huawei USB HSDPA modems

Home Page: http://m.ac.nz/cheetahwatch/

Objective-C 98.68% Perl 1.32%

cheetahwatch's Introduction

{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf250
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw11900\paperh16840\margl1440\margr1440\vieww11420\viewh13700\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural

\f0\b\fs22 \cf0 CheetahWatch README\

\b0 \
This file shortly explains the purpose and function of all classes used in CheetahWatch\
\

\b How to add new devices\

\b0 In order to add new devices (other Huawei modems should work with the following changes only, while modems from other manufacturers may or may not need code changes, too), follow these instructions:\
\
1.  Add a record to devices.plist - best copy an existing one and adapt the value of the keys idProduct and idVendor. The values (in hex) are displayed Apple System Profiler. For non USB devices, the key IOProviderClass needs to be adapted and different matching keys may apply. Have a look at the output of 'ioreg -l' and search for your device.\
2. Add the name of the dialing service for the modem. In order to find the proper name, plug your device in, then run scutil. In scutil, run 'list' and look through all Setup://Network/Service/xxxxx/Interface entries for the device ('show Setup://Network/Service/xxxxx/Interface', replace xxxxx with the real UUIDs your find in the output of 'list'). Use the value in entry DeviceName as the service name and add it to the list in the file modems.plist.\
3. Test if it is working.\
4. Send in your results (especially the new entries in devices.plist and modems.plist) to us for continues support of that device in newer releases.\
\

\b General
\b0 \
Information is usually displayed using Cocoa's binding, unless really unpractical. So a lot of work usually done in code is done automatically. A lot of information of how the application displays information is not visible in the code anymore but you'll need to look at the bindings in IB instead.\
All strings are localized, either in Localizable.strings or in MainMenu.nib. Please send us your Localizable.strings and MainMenu.nib, if you translated CheetahWatch to another language.\
Debug output is automatically enabled when built in build mode 'Debug' and 'Debug64'. Output is not generated for release builds ('Release').\
\

\b CWApplication
\b0 \
Main controller, subclassed from NSApplication and created automatically at application start (see PrincipalClass entry in Info.plist). All GUI actions come here.\
\

\b CWDialer
\b0 \
Monitors for network configuration changes and subscribes for HUWAEI (or others, see later) services to dial. Offering methods to connect and disconnect a service, and monitors the connection state of services (in case other applications initiate dialing or disconnects). Reads the file modems.plist for supported service names.\
\

\b CWModem\

\b0 Handles all communication with the modem (AT commands) and handles a selected number of status replies about traffic, signal level, mode etc. CWModem is creating a CWUSBFinder instance to get notified about plugged/unplugged modems.\
\

\b CWUSBFinder\

\b0 Monitors all USB ports for devices listed in devices.plist and notifies its delegate (usually a CWModem instance) about plugged and unplugged devices. The XML file devices.plist can be extended with new devices to be supported. One entry looks as follows:\
\
        <dict>\
                <key>
\b devicePath
\b0 </key>\
                <string>/dev/cu.HUAWEIMobile-Pcui</string>\
                <key>matchingDictionary</key>\
                <dict>\
                        <key>
\b IOProviderClass
\b0 </key>\
                        <string>IOUSBDevice</string>\
                        <key>
\b idProduct
\b0 </key>\
                        <integer>4099</integer>\
                        <key>
\b idVendor
\b0 </key>\
                        <integer>4817</integer>\
                </dict>\
        </dict>\
 \

\b devicePath
\b0 : the path to the special device to control the modem - must be cu entry since most tty entries block at open.\

\b IOProviderClass
\b0 : Depends on the device, IOUSBDevice for USB devices, IOPCIDevice for PCI devices etc.\

\b idProduct
\b0 : USB product ID\

\b idVendor
\b0 : USB vendor ID\
\
Please note that the entry within matchingDictionary depend 
\b on the device type (IOProviderClass)
\b0 .\
\

\b CWNetworks:\

\b0 Translates combined MCC and MNC string to human readable operator name (as listed in http://www.itu.int/dms_pub/itu-t/oth/02/06/T02060000030004PDFE.pdf). It reads networks.plist once and caches the entries.\
\

\b CWModel, CWPreferences, CWConnectionRecord\

\b0 Data model of application. CWModel as the topmost class stores all volatile data and has references into the connection list (NSArray of CWConnectionRecord) and the application setting (CWPreferences).\
\

\b CWPrettyPrint\

\b0 Offers functions (not methods) to pretty print a byte amount, a speed amount and a duration.\
\

\b CWBytesValueTransformer.m, CWCarrierValueTransformer.m, CWConnectButtonValueTransformer.m\
CWConnectionStateValueTransformer.m, CWDurationValueTransformer.m, CWIconValueTransformer.m\
CWModeValueTransformer.m\

\b0 NSValueTranformer subclasses required to display information in the GUI. Names should give enough hints about their use.\
\

\b CWStatusWindow
\b0 \
NSWindow subclass implementing show/hide of a section with a triangle control.\
\

\b NSWindowExtensions
\b0 \
Category to NSWindow implementing a generic sheet button action (which will stop the modal loop with the sender's tag as the return code) and ordering the window to the front and activating the application at the same time, since this is required for menu bar items for its windows always appear in front.\
}

cheetahwatch's People

Contributors

thepatrick avatar oskarirauta avatar tcurdt avatar jcalado avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.