Friday, June 24, 2016

Airborne Internet


Airborne:

Transported by air.


Internet


An Internet means connecting a computer to any other computer anywhere in the world via dedicated routers and servers. When two computers are connected over the Internet, they can send and receive all kinds of information such as text, graphics, voice, video, and computer programs.


Airborne Internet

There's a new type of service being developed that will take broadband into the air. The airborne Internet won't be completely wireless. There will be ground-based components to any type of airborne Internet network. The consumers will have to install an antenna on their home or business in order to receive signals from the network hub overhead. The networks will also work with established Internet Service Providers (ISPs), who will provide their high-capacity terminals for use by the network. These ISPs have a fiber point of presence their fiber optics are already set up. What the airborne Internet will do is provide an infrastructure that can reach areas that don't have broadband cables and wires.

Introduction to Airborne Internet


At least three different methods have been proposed for putting communication nodes aloft. The first method would employ manned aircraft, the second method would use unmanned aircraft, and the third method would use blimps. The nodes would provide air-to-air, surface-to-air, and surface-to-surface communications. The aircraft or blimps would fly at altitudes of around 10 mi (16 km), and would cover regions of about 40 mi (64 mi) in radius. Data transfer rates would be on the order of several megabits per second, comparable to those of high-speed cable modem connections. Network users could communicate directly with other users, and indirectly with conventional Internet users through surface-based nodes. Like the Internet, the Airborne Network would use TCP/IP as the set of protocols for specifying network addresses and ensuring message packets arrive.


Principle & Working

The principle behind the A.I. is to establish a robust, reliable, and available digital data channel to aircraft. Establishing the general purpose, multi-application digital data channel connection to the aircraft is analogous to the connection of a desktop computer to its local area network, or even the wide area network we call the Internet. But aircraft are mobile objects. Therefore, mobile routing is required to maintain the data channel connectivity while the aircraft moves from region to region Mobile routing is the ability of a network user to move from one network to another without losing network connectivity. It has been developed and has matured to the point that it is ready to be applied to aviation.
The current internet protocol (IP) is being replaced with a new version that includes provisions for security and mobile routing. It is specifically designed to accommodate the proliferation of wireless network devices that are easily transportable between networks. XML services, a standard way in which software interacts provide the opportunity for all information to be published as soon as it is available. This means the end user has the opportunity to receive near real time data, depending on the situation. XML is independent of the platform, operating system, or the device of the information source and the end user. Currently in aviation, very little information can be updated digitally during flight. At best, some information is updated using the analogue voice channel. Using XML aviation services, aircraft operators could receive automatic updates of weather, landing conditions at the destination airport, turbulence ahead, and other information. Airborne Internet could be the means by which the aviation industry will realize these benefits by providing XML services capability to aircraft.
The A.I Aircraft will house packet switching circuitry and fast digital network functions. The communications antenna and related components will be located in a pod suspended below the aircraft fuselage. To offer "ubiquitous" service throughout a large region, the antenna will utilize multiple beams arranged in a typical cellular pattern. Broadband channels to subscribers in adjacent cells will be separated in frequency. As the beams traverse over a user location, the virtual path through the packet switch will be changed to perform a beam-to-beam handoff.
The airborne Internet won't be completely wireless. There will be ground-based components to any type of airborne Internet network. The consumers will have to install an antenna on their home or business in order to receive signals from the network hub overhead. The networks will also work with established Internet Service Providers (ISPs), who will provide their high-capacity terminals for use by the network. These ISPs have a fibre point of presence -- their fibre optics is already set up. What the airborne Internet will do is provide an infrastructure that can reach areas that don't have broadband cables and wires.
The Airborne Network will offer ubiquitous access to any subscriber within a "super metropolitan area" from an aircraft operating at high altitude. The aircraft will serve as the hub of the Airborne Network serving tens to hundreds of thousands of subscribers. Each subscriber will be able to communicate at multi-megabit per second data rates through a simple-to-install subscriber unit. The Airborne Network will be steadily evolved at a pace with the emergence of data communications technology world-wide. The Airborne Network will be a universal wireless communications network solution. It will be deployed globally on a city-by-city basis.
An airplane specially designed for high altitude flight with a payload capacity of approximately one ton is being developed for commercial wireless services. It will circle at high altitudes for extended periods of time and it will serve as a stable platform from which broadband communications services will be offered. The High Altitude Long Operation (HALO) Aircraft will maintain station at an altitude of 52 to 60 thousand feet by flying in a circle with a diameter of about 5 to 8 nautical miles. Three successive shifts on station of 8 hours each can provide continuous coverage of an area for 24 hours per day, 7 days per week. Such a system can provide broadband multimedia communications to the general public.
One such platform will cover an area of approximately 2800 square miles encompassing a typical metropolitan area. A viewing angle of 20 degrees or higher will be chosen to facilitate good line-of-sight coverage at millimeter wave (MMW) frequencies (20 GHz or higher). Operation at MMW frequencies enables broadband systems to be realized, i.e., from spectrum bandwidths of 1 to 6 GHz. MMW systems also permit very narrow beamwidths to be realized with small aperture antennas. Furthermore, since the aircraft is above most of the earth's oxygen, links to satellite constellations can be implemented using the frequencies overlapping the 60 GHz absorption band for good immunity from ground-based interference and good isolation from inter-satellite links.
The A.I Network can utilize a cellular pattern on the ground so that each cell uses one of four frequency sub-bands, each having a bandwidth up to 60 MHz each way. A fifth sub-band can be used for gateways (connections to the public network or dedicated users). Each cell will cover an area of a few square miles. The entire bandwidth will be reused many times to achieve total coverage throughout the 2800 square mile area served by the airborne platform. The total capacity of the network supported by a single airborne platform can be greater than 100 Gbps. This is comparable to terrestrial fiber-optic (FO) networks and can provide two-way broadband multimedia services normally available only via FO networks
The Airborne Network provides an alternative to satellite- and ground-based systems. Unlike satellite systems, however, the airborne system concentrates all of the spectrum usage in certain geographic areas, which minimizes frequency coordination problems and permits sharing of frequency with ground-based systems. Enough power is available from the aircraft power generator to allow broadband data access from small user terminals.

WHY AIRBORNE INTERNET?
There are mainly two reasons for the development of Airborne Internet. They are,
  1. SMALL AIRCRAFTS TRANSPORTATION SYSTEM.
  2.  NEED FOR A HIGH BANDWIDTH

SMALL AIRCRAFTS TRANSPORTATION SYSTEM.

The first reason for the development of A.I is SATS. It began as a supporting technology for the NASA’s SATS. NASA is creating an infrastructure for fleets of small aircraft. People won’t have to fly between large cities on jet airliners. Instead, they will be able to fly themselves right to where they want to go. This would speed up air travel. But, it would need a major change in air traffic control to be able to manage thousands of small airplanes filling the skies. That’s where the “Airborne Internet” comes in. This project is being developed along with the Small Aircraft Transportation System (SATS). The SATS is studying the possibility of a system of 2- to 10-passenger airplanes. People could fly these small airplanes to and from small community or neighbourhood airports. Before this system becomes a reality, there are still many bugs that need to be worked out. Communication is one of the problems that will have to be fixed. The SATS would lead to thousands of inexperienced pilots flying airplanes. They would be flying to and from small airports that don’t usually have much traffic. Without major changes in air traffic control, the chances of plane crashes would greatly increase. That’s why NASA is developing the Airborne Internet.
When people travel, they experience “connectivity down time” in which they are detached from the information that their network provided. Wireless networks are rapidly emerging to help fill this void. People that travel with laptops or personal digital assistants can obtain short term network connectivity from a business establishment when they stop for a break. Airport terminals are becoming popular “hot spots’ for wireless connectivity as people have time before and between flights to connect to the wireless network. The “human connectivity imperative” shows us a glaring absence of network connectivity during travel. While in motion on an aircraft, for example, people again lose the ability to connect. We design transportation systems to interconnect to complimentary forms of transportation. But these designs have ignored the information connectivity needs of the people who use it. The time people spend in transit could be turned into more productive time if network connectivity were available. This can be accomplished using the A.I.

Need for higher bandwidth

The second reason is related with the need for a higher bandwidth. The computer most people use comes with a standard 56K modem, which means that in an ideal situation the computer would downstream at a rate of 56 kilobits per second (Kbps). That speed is far too slow to handle the huge streaming-video and music files that more consumers are demanding today. That's where the need for bigger bandwidth – broadband -- comes in, allowing a greater amount of data to flow to and from the computer. Land-based lines are limited physically in how much data they can deliver because of the diameter of the cable or phone line. In an airborne Internet, there is no such physical limitation, enabling a broader capacity.

fig: Comparision of A.I and Internet

Parameters
Internet
A.I
1.    Distance of Communication
2.    Line of Sight Obstruction
3.    Antenna Weight
4.    Bandwidth
5.    Delay
Low
Not Present
Can be high
Comparatively High
Not Significant
Very High
Present
Must be Low
Broad
Not Significant

Seminar Topics


  1. Airborne Internet

Thursday, June 23, 2016

Types

C is a typed language. Each variable is given a specific type which defines what values it can represent, how its data is stored in memory, and what operations can be performed on it. By forcing the programmer to explicitly define a type for all variables and interfaces, the type system enables the compiler to catch type-mismatch errors, thereby preventing a significant source of bugs.
There are three basic types in the C language: characters, and integer and floating-point numbers.
The numerical types come in several of sizes. Table 2.1 shows a list of C types and their typical sizes, although the sizes may vary from platform to platform. Nearly all current machines represent an int with at least 32-bits and many now use 64-bits. The size of an int generally represents the natural word-size of a machine; the native size with which the CPU handles instructions and data. 

C Data Types
Char
Int

Short Int
Long Int
Float
Double
Long Double
Usually 8-bits (1 byte)
Usually the nature word size for a machine or OS (e.g., 16,32,64, etc.,)
At least 16 bits
At least 32 bits
Usually 32 bits
Usually 64 bits
Usually at least 64 bits












With regard to size, the standard merely states that a short int be at least 16-bits, a long int
at least 32-bit, and 
short int ≤ int ≤ long int
The standard says nothing about the size of floating-point numbers except that
float ≤ double ≤ long double.
A program to print the range of values for certain data types is shown below. The parameters such as INT_MIN can be found in standard headers limits.h and float.h.


Example:1

#include <stdio.h>
#include <limits.h> /* integer specifications */
#include <float.h> /* floating-point specifications */

/* Look at range limits of certain types */
 int main (void)
 {
 printf("Integer range:\t%d\t%d\n", INT MIN, INT MAX);
 printf("Long range:\t%ld\t%ld\n", LONG MIN, LONG MAX);
 printf("Float range:\t%e\t%e\n", FLT MIN, FLT MAX);
 printf("Double range:\t%e\t%e\n", DBL MIN, DBL MAX);
 printf("Long double range:\t%e\t%e\n", LDBL MIN, LDBL MAX);
 printf("Float-Double epsilon:\t%e\t%e\n", FLT EPSILON, DBL EPSILON);

 }


Note. 

The size of a type in number of characters (which is usually equivalent to number of bytes) can be found using the sizeof operator. This operator is not a function, although it often appears like one, but a keyword. It returns an unsigned integer of type size_t, which is defined in header-file stddef.h.


Example:2

#include <stdio.h>

 int main (void)
 /* Print the size of various types in “number-of-chars” */
 {
 printf("void\tchar\tshort\tint\tlong\tfloat\tdouble\n");
 printf("%3d\t%3d\t%3d\t%3d\t%3d\t%3d\t%3d\n",
 sizeof(void), sizeof(char), sizeof(short), sizeof(int),

 sizeof(long), sizeof(float), sizeof(double));
 }


The keywords short and long are known as type qualifiers because they affect the size of a basic int type. (The qualifier long may also be applied to type double.) Note, short and long, when used on their own as in 
short a;
long x;
are equivalent to writing short int and long int, respectively. Other type qualifiers2 are signed, unsigned, const, and volatile. The qualifiers signed or unsigned can apply to char or any integer type. A signed type may represent negative values; the most-significant-bit (MSB) of the number is its sign-bit, and the value is typically encoded in 2’s-complement binary. An unsigned type is always non-negative, and the MSB is part of the numerical value—doubling the maximum representable value compared to an equivalent signed type. For example, a 16-bit signed short can represent the numbers −32768 to 32767 (i.e., −215 to 215 − 1), while a 16-bit unsigned short can represent the numbers 0 to 65535 (i.e., 0 to 216−1).


Note.

Integer types are signed by default (e.g., writing short is equivalent to writing signed
short int). However, whether plain char’s are signed or unsigned by default is machine dependent.
The qualifier const means that the variable to which it refers cannot be changed.
const int DoesNotChange = 5;
DoesNotChange = 6; /* Error: will not compile */
The qualifier volatile refers to variables whose value may change in a manner beyond the normal control of the program. This is useful for, say, multi-threaded programming or interfacing to hardware; topics which are beyond the scope of this text. The volatile qualifier is not directly relevant to standard-conforming C programs, and so will not be addressed further in this text.
Finally, there is a type called void, which specifies a “no value” type. It is used as an argument for functions that have no arguments, and as a return type for functions that return no value.

Identifiers

Identifiers (i.e., variable names, function names, etc) are made up of letters and digits, and are case-sensitive. The first character of an identifier must be a letter, which includes underscore (_).
The C language has 32 keywords which are reserved and may not be used as identifiers (eg, int, while, etc). Furthermore, it is a good idea to avoid redefining identifiers used by the C standard library (such as standard function names, etc).

Style Note. 

Use lowercase for variable names and uppercase for symbolic constants. Local variable names should be short and external names should be longer and more descriptive. Variable names can begin with an underscore (_), but this should be avoided as such names, by convention, are reserved for library implementations.

Tuesday, June 21, 2016

C programs

First Program


A C program, whatever its size, consists of functions and variables. A function contains statements that specify the computing operations to be done, and variables store values used during the computation. 

The following program is the traditional first program presented in introductory C courses and textbooks.

/* First C program: Hello World */
#include <stdio.h>

int main(void)
{
 printf("Hello World!\n");
}


  1. Comments in C 1 start with /* and are terminated with */. They can span multiple lines and are not nestable.
  2. Inclusion of a standard library header-file. Most of C’s functionality comes from libraries. Headerfiles contain the information necessary to use these libraries, such as function declarations and macros. 
  3. All C programs have main() as the entry-point function. This function comes in two forms:
                    int main(void)
                    int main(int argc, char *argv[])

  1. The first takes no arguments, and the second receives command-line arguments from the environment in which the program was executed—typically a command-shell. The function returns a value of type int(i.e., an integer).
  2. The braces { and } delineate the extent of the function block. When a function completes, the program returns to the calling function. In the case of main(), the program terminates and control returns to the environment in which the program was executed. The integer return value of main() indicates the program’s exit status to the environment, with 0 meaning normal termination.
  3. This program contains just one statement: a function call to the standard library function printf(), which prints a character string to standard output (usually the screen). Note, printf() is not a part of the C language, but a function provided by the standard library (declared in header stdio.h).
  4. The standard library is a set of functions mandated to exist on all systems conforming to the ISO C standard. In this case, the printf() function takes one argument (or input parameter): the string constant "Hello World!\n". The \n at the end of the string is an escape character to start a new line. Escape characters provide a mechanism for representing hard-to-type or invisible characters (e.g., \t for tab, \b for backspace, \" for double quotes). Finally, the statement is terminated with a semicolon (;). C is a free-form language, with program meaning unaffected by white space in most circumstances. Thus, statements are terminated by ; not by a new line.




Monday, June 13, 2016

Introduction

C is a general-purpose programming language, and is used for writing programs in many different domains, such as operating systems, numerical computing, graphical applications, etc. It is a small language, with just 32 keywords. It provides “high-level” structured programming constructs such as statement grouping, decision making, and looping, as well as “low level” capabilities such as the ability to manipulate bytes and addresses. 
  1. C provides no operations to deal directly with composite objects such as lists or arrays. 
  2. There are no memory management facilities apart from static definition and stack-allocation of local variables. 
  3. And there are no input/output facilities, such as for printing to the screen or writing to a file.
Much of the functionality of C is provided by way  of software routines called functions. The language is accompanied by a standard library of functions that provide a collection of commonly used operations. 
  • For example, the standard function printf() prints text to the screen (or, more precisely, to standard output—which is typically the screen). The standard library will be used extensively throughout this text; it is important to avoid writing your own code when a correct and portable implementation already exists. 

Tuesday, June 7, 2016

System Developments

Systems development is the process of defining, designing, testing, and implementing a new software application or program. It could include the internal development of customized systems, the creation of database systems, or the acquisition of third party developed software. 
Written standards and procedures must guide all information systems processing functions. The organization’s management must define and implement standards and adopt an appropriate system development life cycle methodology governing the process of developing, acquiring, implementing, and maintaining computerized information systems and related technology.

Essential Practices Statement

1.Systems Development Life Cycle (SDLC) Standards and Procedures

 Establish written standards and procedures for systems development and maintenance for the systems to be developed, acquired, implemented, and maintained. Review SDLC methodology to ensure that its provisions reflect current generally accepted techniques and procedures. 

Reason: 

SDLC documented standards and procedures ensure a consistent approach and controls are maintained throughout a systems or application development process. 

2. SDLC Management and Controls

 Ensure adequate SDLC management processes and controls exist. Essential management processes and controls over the system development (project) process include: 
• Appropriate strategic planning for projects within the IT short- and long-term plans, including authorization and reporting requirements from senior management to the board; 
• Periodic reporting to the board on project status and target completion dates (including budget variance reports); 
• Requirements for internal audit involvement in mission critical projects; and, 
• Requirements for security officer/team involvement regarding security controls.  

Reason: 

Appropriate management processes and controls over the systems development process ensures efficient use of resources and minimizes risk(s) within systems development and programming activities. A general systems development or project management framework defines the scope and boundaries of managing projects, as well as the SDLC or project management methodology to be adopted and applied. Automated project planning, monitoring, and production software aids help control and facilitate the systems development process. Periodic reporting to senior management and the board as well as auditor and security officer involvement enables controls to be considered during the development process prior to implementation into production. 

3. SDLC Documentation 

Develop and maintain a well-documented SDLC for all system and application development processes. At a minimum, the SDLC documentation will include: 
• Project initiation (planning); 
• Requirements definition (analysis); 
• System design; 
• System development; 
• Testing; 
• Implementation and support;

Reason: 

Minimum SDLC standards should ensure that project development is sufficiently controlled to ensure the integrity of the system and IT infrastructure. The development process may differ depending on the method used (prototyping, rapid application development, waterfall, etc.). The process should be flexible while providing maintenance of system integrity and internal controls. 

4. Testing Standards

Document testing standards and procedures. Standard testing procedures include: • A documented test plan; 
• Types of tests to be used (e.g., unit, parallel, user test, regression); 
• A restriction of the use of live files in testing to prevent destruction or alteration of live data; • Simulated error conditions to ensure that the program effectively handles all situations; and • Independent verification, documentation, and retention of test results. 

Reason: 

Testing standards and procedures must be documented to ensure consistency and data integrity during the testing process. The testing phase is designed to prove the reliability of the application or system. Testing is performed in an isolated environment to ensure that new programs do not adversely impact existing production systems. Testing ensures that data will be processed correctly and reliable output will be produced in the desired format. 

5. Change Control Approval

 Document standards for managing changes (Change Control) to an existing information systems infrastructure. The Change Control process includes: 
  • Management and business unit approval of the change request; Element Essential Practices Statement Change Control Approval 
  • Systems Development Industry Standard Reference 
  • Specification of change; 
  • Approval for access to source code; 
  • Programmer completion of change; 
  • Request and approval to move source code into the test environment; 
  • Completion of acceptance testing by business unit owner; 
  • Request and approval for compilation and move to production; and 
  • Determination and acceptance of overall and specific security impact. 

Reason: 

Change management procedures must be documented and followed in order to minimize the likelihood of system disruption, unauthorized alterations, and errors to the existing IT infrastructure.

6. Change Control Documentation 

Document the process for modifying information systems programs. Change Control documentation includes: 
• Change request date; 
• Person(s) requesting; 
• Change request approval; 
• Change request approval and acceptance (Management and business users); 
• Documentation revision date; 
• Quality assurance approval; 
• Final business unit owner acceptance and approval; and 
• Date moved into production.

Reason:

Change control documentation is necessary to ensure management and users are aware of changes being made to the existing IT infrastructure. Documentation is also necessary to ensure appropriate segregation of duties between production, application, and operation staff. 

7. Emergency Change Control Procedures 

Document and control Emergency Program Changes. Control procedures include: 
• Approval by supervisory personnel; 
• Review of changes by a knowledgeable supervisor if the source code is changed; 
• A form used to identify the change, indicate the reason(s) for the emergency change, identify who made the change, record the date the change was made, and document the authorization signature(s); and 
• Completion of normal management procedures after the emergency change is made (see Change Control Essential Practice Statements above). 

Reason:

Occasionally the need for program change arises that must bypass normal change procedures. Such a change might be required to restore production processing. These immediate (emergency) changes are usually called patches, quick fixes, program temporary fixes, or temporary program changes. The use of such techniques should be strictly controlled to prevent unauthorized changes and to ensure that approved changes are made correctly. 

Monday, June 6, 2016

Creating and Running Programs

The stages of developing your C Program is as follows:

  1. Creating the program
  2. Compiling the program
  3. Running the program

1. Creating the Program

Create a file containing the complete program, The file name must end with ``.c'' extension (full stop, lower case c), e.g. example.c or first.cThe contents must obey C syntax. 

2. Compiling the Program

There are many C compilers around. The cc being the default Sun compiler. The GNU C compiler gcc is popular and available for many platforms. PC users may also be familiar with the Borland bcc compiler. All the above compilers operate in essentially the same manner and share many common command line options. To Compile your program simply invoke the command cc. The command must be followed by the name of the (C) program you wish to compile. 

Thus, the basic compilation command is:

    cc program.c

where program.c is the name of the file.
If there are obvious errors in your program (such as mistypings, misspelling one of the key words or omitting a semi-colon), the compiler will detect and report them.
There may, of course, still be logical errors that the compiler cannot detect. You may be telling the computer to do the wrong operations.
When the compiler has successfully digested your program, the compiled version, or executable, is left in a file called a.out or if the compiler option -o is used : the file listed after the -o.
It is more convenient to use a -o and filename in the compilation as in
    cc -o program program.c
which puts the compiled program into the file program (or any file you name following the "-o" argument) instead of putting it in the file a.out .

3. Running the Program

The next stage is to actually run your executable program. This executes your program, printing any results to the screen. At this stage there may be run-time errors, such as division by zero, or it may become evident that the program has produced incorrect output. If so, you must return to edit your program source, and recompile it, and run it again.

The C Compilation Process

PreProcessor

The Preprocessor accepts source code as input and is responsible for
  • removing comments
  • interpreting special preprocessor directives denoted by #.

C Compiler

The C compiler translates source to assembly code. The source code is received from the preprocessor.

Assembler

The assembler creates object code. On a UNIX system you may see files with a .o suffix (.OBJ on MSDOS) to indicate object code files.

Link Editor

If a source file references library functions or functions defined in other source files the link editor combines these functions (with main()) to create an executable file. External Variable references resolved here also.