Tuesday, 11 June 2019

What is WebRTC?


WebRTC

Introduction
WebRTC stands for web real-time communications. It is a very exciting, powerful, and highly disruptive cutting-edge technology and standard. WebRTC leverages a set of plugin-free APIs that can be used in both desktop and mobile browsers, and is progressively becoming supported by all major modern browser vendors. Previously, external plugins were required in order to achieve similar functionality as is offered by WebRTC.
WebRTC leverages multiple standards and protocols, most of which will be discussed in this article. These include data streams, STUN/TURN servers, signaling, JSEP, ICE, SIP, SDP, NAT, UDP/TCP, network sockets, and more.





Peer-To-Peer Communication
WebRTC can be used for multiple tasks, but real-time peer-to-peer audio and video (i.e., multimedia) communications is the primary benefit. In order to communicate with another person (i.e., peer) via a web browser, each person’s web browser must agree to begin communication, know how to locate one another, bypass security and firewall protections, and transmit all multimedia communications in real-time.
One of the biggest challenges associated with browser-based peer-to-peer communications is knowing how to locate and establish a network socket connection with another computer’s web browser in order to bidirectional transmit multimedia data. When you visit a web site, you typically enter a web address or click a link to view the page. A request is made to a server that responds by providing the web page (HTML, CSS, and JavaScript). The key here is that you make an HTTP request to a known and easily locatable (via DNS) server and get back a response (i.e., the web page).





Firewalls and NAT Traversal
Most of us access the internet from a work or home-based network. Our computer typically sits behind a firewall and network access translation device (NAT), and therefore is not assigned a static public IP address. From a very high level, a NAT device translates private IP addresses from inside a firewall to public-facing IP addresses. NAT devices are needed for security and IPv4 limitations on available public IP addresses.
Here is an example of NAT at work: suppose you’re at a coffee shop and join their WiFi, your computer will be assigned an IP address that exists only behind their NAT, say 172.0.23.4. To the outside world, however, your IP address may actually be 164.53.27.98. The outside world will therefore see your requests as coming from 164.53.27.98, but the NAT device will ensure responses to your requests are sent to 172.0.23.4 through the use of mapping tables. Note that in addition to the IP address, a port is also required for network communications, and the required knowledge of an accompanying port is therefore implied throughout this article.
Given the involvement of a NAT device, how do I know my mom’s IP address to send audio and video data to, and likewise, how does she know what IP address to send audio and video back to?
This is where STUN (Session Traversal Utilities for NAT) and TURN (Traversal Using Relays around NAT) servers come into play. In order for WebRTC technologies to work, a request for your public-facing IP address is first made to a STUN server. Think of it like your computer asking a remote server, “Howdy, would you mind telling me what IP address you see me as having?”. The server then responds with something like, “Sure your IP address is 198.54.5.67”.
Assuming this process works and you receive your public-facing IP address and port, you are then able to tell other peers how to contact you directly. These peers are also able to do the same thing using a STUN or TURN server and can tell you what address to contact them at as well.


Signaling, Sessions, and Protocols
The network information discovery process described above is one part of the larger topic of signaling, which is based on the JavaScript Session Establishment Protocol (JSEP) standard in the case of WebRTC. Signaling involves network discovery and NAT traversal, session creation and management, communication security, media-capability metadata and coordination, and error handling.
Signaling is not specified by the WebRTC standard, nor implemented by its APIs in order to allow flexibility in the technologies and protocols used. Signaling and the server that handles it is left to the WebRTC application creator to sort out.
Assuming that your WebRTC browser-based application is able to determine it’s public-facing IP address using STUN as described, the next step is to actually negotiate and establish the network session connection with your peer. This process is analogous to making a phone call.
The initial session negotiation and establishment happens using a signaling/communication protocol specialized in multimedia communications. This protocol is also responsible for governing the rules by which the session is managed and terminated.
One such protocol is the Session Initiation Protocol (aka SIP). Note that due to the flexibility of WebRTC signaling, SIP is not the only signaling protocol that can be used. The signaling protocol chosen must also work with an application layer protocol called the Session Description Protocol (SDP), which is used in the case of WebRTC. All multimedia-specific metadata is passed using the SDP Protocol.
Any peer (i.e., WebRTC-leveraging application) that is attempting to communicate with another peer generates a set of ICE candidates, where ICE stands for the Interactive Connectivity Establishment protocol. The candidates represent a given combination of IP address, port, and transport protocol to be used. Note that a single computer may have multiple network interfaces (wireless, wired, etc.), so can be assigned multiple IP addresses, one for each interface.

 

Advantages of WebRTC

1. Open source code
WebRTC is an open source code based project intended for data streaming between apps and browsers. This new communication standard is supported using the peer-to-peer technology. Google is the original developer of this technology, but today WebRTC is supported not only by Google Chrome, but also Opera and Firefox browsers. Other browsers can support WebRTC as well, after installing the additional extension webrtc4all.
2. Strong rival to classic telephony
Today, WebRTC is still a new experimental technology. However, it is forecasted that after standardization and certain improvements, this new communications standard will put pressure on the market of classic telephony. In fact, classic telephony already feels serious competition from more quality and cheaper VoIP services, such as Viber and Skype.

3. More security and stability
Despite the fact that this new communication standard is still in the process of refinement and development, there are certain clear advantages of WebRTC over the Flash technology. The WebRTC architecture is considered to have fewer disadvantages than the Flash plugin and to be more logical. Flash has dominated the market until recently, but it has been discontinued from the main web browsers such as Chrome and Firefox. When it comes to browser security and stability against external attacks, WebRTC is certainly the best choice.
4. Better sound quality
Among the benefits of WebRTC is also included the fact that, particularly due to the adjustable built-in microphone settings, this technology provides better sound quality than Flash. WebRTC technology uses G.711 and Opus codecs for transferring audio.
5. Supported by most leading Windows browsers
The many advantages of using WebRTC and the platform’s open source code make the interest in this technology from different businesses to continue growing. Many companies consider using independent solutions as being strategically profitable. This technology is ready to be implemented by some WebRTC developers into existing online business. Today WebRTC API is supported by most leading Windows browsers, including Google Chrome, Opera beta.
6. Interoperability with VoIP and video
The biggest value of WebRTC is its promise of interoperability with existing voice and video systems. This includes devices using SIP, Jingle, XMPP, and the PSTN. What may hinder the global interoperability will be the upgrades necessary in exiting devices. Alternately, gateways can be the solution to interoperability. Some are already on the market. If the existing voice and video devices using standard protocols, they will probably work with WebRTC-based devices.


Thursday, 19 July 2018

Download Modern C++ Design: Generic Programming and Design Patterns Applied Pdf

The author describes the specific C++ techniques and features that are used in building generic components and goes on to implement industrial strength generic components for real-world applications. Recurring issues that C++ developers face in their day-to-day activity are discussed in depth and implemented in a generic way.
These include: z
  1.  Policy-based design for flexibility z 
  2. Partial template specialization z 
  3. Typelists-powerful type manipulation structures z 
  4. Patterns such as Visitor, Singleton, Command, and Factories z 
  5. Multi-method engines 






Press Download Button ----->     Download Now

Effective c++ pdf 55 Specific Ways to Improve Your Programs and Designs


The book is organized around 55 specific guidelines, each of which describes a way to write better C++. Each is backed by concrete examples. For this third edition, more than half the content is new, including added chapters on managing resources and using templates. Topics from the second edition have been extensively revised to reflect modern design considerations, including exceptions, design patterns, and multithreading.
Important features of Effective C++ include:
  • Expert guidance on the design of effective classes, functions, templates, and inheritance hierarchies.
  • Applications of new “TR1” standard library functionality, along with comparisons to existing standard library components.
  • Insights into differences between C++ and other languages (e.g., Java, C#, C) that help developers from those languages assimilate “the C++ way” of doing things.

Download Now

Thursday, 6 July 2017

SOLVED: error code 13 in eclipse


Hello guys,

Sometimes You face your eclipse is not opening after installing some new java jre or jdk version. At the time of opening eclipse your got big popup error code 13 as per below image.




- Do not worry. just Relex!!!!!!....  I will provide you a good solution and worked most of times.

- Just open your eclipse folder  as per below image.


- Open eclipse.ini File in notepad or notepad++.

- Add this two line as per your java jdk installation directory.



-- Now just open again eclipse.....Anddd MAGICCCC......enjoy your coding again........

Download Embedded C programming Tutorial:pdf

You can Download tutorial from below link


Link To DownLoad

Download Now

Wednesday, 26 April 2017

How to set c++11 or c++14 flag in compiler in CodeBlock

Hello All,


Many times you come across the word of std=c++11 or std=c++14 in compiler world.It is actually compiler flag that contain all functionality which release on that version.Number comes from year.

every few compiler with newer functionality. So In any software we need to set flag to use those functionality if it is not set by default. Here I will show you for Code Block software or IDE.

1) Open Code block IDE .Page will Look like below image.




2) Then you need to go "Settings" Tab in upper status bar.Then select "Compiler.." option.

3) Now you can see various compiler version available. From this You can enable any compiler which available.Here I have tick std=c++11 version.Now press OK.






Friday, 29 April 2016

Download design patterns explained simply pdf






Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.
The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently.
Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk.


  Press Download Button ----->     Download Now

Tuesday, 15 March 2016

Android N features (Nought)




The first Android N developer preview is now out and it gives us a sneak peek into what Android 7.0 will eventually look like when it arrives officially later this year. Of course, developer previews quite often contain features that won’t make it to the final release, but there’s still plenty to get excited about, so let’s dive right in. Here are all the confirmed, rumored and expected Android N features, with a particular focus on what currently exists in the first Android N preview update. Please note that some features have been officially confirmed by Google, while others, “confirmed” by the developer preview, could still disappear before Android 7.0.



1. Multitasking support


                                               Picture Courtesy :Android Authority

Android devices by the likes of Samsung and LG have supported multiple apps on the same window for a long time, but Google is finally making it a native feature for Android with the next build. Android N will allow users to open two apps in split-screen mode on Nexus devices as well as other smartphones and tablets that get the OS later on.
The OS will intuitively gauge and change the screen display of various apps, but a user can himself recreate it too with new dimensions. This means, for example, users can keep tweeting while watching a video on YouTube.


2. More Quick Settings options


                                                    Picture Courtesy :Android Authority

Android N brings with it more Quick Settings when you slide the notifications pane down. You can have up to nine toggles in a single Quick Settings screen, and access more of the toggles by swiping to the right.

3. Revamped notifications


                                                 Picture Courtesy :Android Authority

Find your notifications a mess? Android N may help solve this, courtesy the new feature called 'Bundled notifications'. With this feature, users can group together notifications from each app in the menu and one will just need to tap the bundle to read individual alerts.

'Bundled notifications' is similar to the 'Notification Stacks' feature in Android Wear devices.

4. Better battery life

                                                   Picture Courtesy :AndroidPit

Doze, a feature that was introduced with Android Marshmallow, gets a few improvements. With Android 7.0, Doze will work not only when your phone is not in use, but also when the screen is turned off. This is expected to improve the battery life of devices running on the latest version of Google’s mobile OS, but the company has not released any figures yet.


5. All-new Recent Apps

The Recent Apps button at the bottom of the screen has remained very one-dimensional so far in terms of function, but that will change with the debut of Android N. In the new build of Android, double-tapping the Recent Apps button from homescreeen will open the last-used app, while double-tapping the button when an app is already open will take you to the app you had open just before.

Pressing the Recent Apps menu will open the menu of all recently-used apps; you can sift through the apps by hitting the Recent Apps key successively. When you stop pressing the key, the app you selected will open in full-screen.


6. Native file manager gets better

Android got a native file manager with the release of Marshmallow (even though file manager apps have been available on Google Play Store for long). However, this file manager is quite basic and does not let you do much than just explore folders and copy files.

Among the new features of the Android N native file browser are: hamburger menus, search ability by file types and folders, the option to move and share files, and Google Drive integration. You can even have multiple instances of the file browser open at the same time.'


7. Block phone numbers at system level

Android N allows users to block phone numbers at the system level, directly from apps like Dialler, Hangouts or Messenger. If a number has been blocked at system-level, other apps on the device will also block it without any action required from the user’s side. Moreover, even third-party apps will block these numbers automatically.

What this means is that a number blocked via the Dialler app will be blocked by the Messenger app as well as WhatsApp, Viber, and others automatically. This will continue even when you switch to a new smartphone.


8. Add emergency contact and medical info on lockscreen

                                            Picture Courtesy :AndroidPit

A potentially life-saving feature of Android N is the ability to add your medical information on the lockscreen itself in case of an emergency. You can go to Users in Settings and select the Emergency Information option; fill the details you want to reveal and add an emergency contact for good measure.

The medical information and emergency contact will be on the lockscreen and will be available to others when they open the Emergency Dialler.



9. No more wait for ‘Optimizing Apps’


When an Android phone/tablet running KitKat, Lollipop and Marshmallow gets a software update, it takes quite a while to restart as the system is ‘optimizing apps’ as it says on the screen. This is because Google moved from Dalvik to ART runtime when it released Android KitKat. But this long drawn process of optimizing apps has been skipped in Android N, which means the device will restart faster and even apps in general will take lesser time to install.


More Reference:

-- http://timesofindia.indiatimes.com/tech/slideshow/android-n-vs-android-marshmallow-10-new-features/No-more-wait-for-Optimizing-Apps/itslideshow/51390316.cms

-- http://www.androidpolice.com/

-- http://www.androidauthority.com/android-7-0-features-673002/






Tuesday, 8 March 2016

download Objective English by Hari mohan Prasad and Uma Rani Sinha (for Competitive Examinations) pdf




About The Book
Various books are available on the market for competitive exams. One such book is Objective English for Competitive Exam. This book is a guide for students who are studying for competitive exams and has proved to be useful for preparation.
The book covers all aspects of the English language and is divided into two sections. Section one covers the theory behind comprehension passages, applying grammar by spotting errors, prepositions and sentence improvement, fill in paragraph gaps, sentence skills, building vocabulary, sentence reconstruction and analogy. Section two of the book contains sample test papers for practise. All the sample questions in section one are objective type and are presented in a workbook pattern so that, while learning the theory, grammar can be practised. This way, when a student is learning through this book, he or she will be able to practically apply the learning while doing the tests or the practise chapters.
Objective English for Competitive Exam has been selling fast and the readers have found the book very useful. The book has been published by Tata McGraw Hill Education Pvt. Ltd. It was first published in 2009. This fourth edition of the book was published in 2013. It is available in paperback.
Key Features

  • The book is a good guide for students preparing for competitive exams.
  • It contains practice test papers.

Press Download Button ----->     Download Now

Friday, 19 February 2016

Socket programming in C using Threads

    /*
    
        C socket server example, handles multiple clients using threads
    
        Compile
    
        gcc server.c -lpthread -o server
    
    */
    
     
    
    #include <stdio.h>
    #include <string.h>    //strlen
    #include <stdlib.h>    //strlen
    #include <sys/socket.h>
    #include <arpa/inet.h> //inet_addr
    #include <unistd.h>    //write
    #include <pthread.h> //for threading , link with lpthread
    
    //the thread function
    void *connection_handler(void *);
    
    int main(int argc , char *argv[])
    {
        int socket_desc , client_sock , c;
        struct sockaddr_in server , client;
    
        //Create socket
        socket_desc = socket(AF_INET , SOCK_STREAM , 0);
        if (socket_desc == -1)
        {
            printf("Could not create socket");
        }
    
        puts("Socket created");
    
        //Prepare the sockaddr_in structure
        server.sin_family = AF_INET;
        server.sin_addr.s_addr = inet_addr("127.0.0.1");
        server.sin_port = htons( 8888 );
    
        //Bind
        if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0)
        {
            //print the error message
            perror("bind failed. Error");
            return 1;
        }
        puts("bind done");
    
        //Listen
        listen(socket_desc , 3);
         
        //Accept and incoming connection
        puts("Waiting for incoming connections...");
        c = sizeof(struct sockaddr_in);
    
        //Accept and incoming connection
        puts("Waiting for incoming connections...");
        c = sizeof(struct sockaddr_in);
        pthread_t thread_id;
    
        
        while( (client_sock = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)) )
        {
            puts("Connection accepted");
    
            if( pthread_create( &thread_id , NULL ,  connection_handler , (void*) &client_sock) < 0)
            {
                perror("could not create thread");
                return 1;
            }
    
            //Now join the thread , so that we dont terminate before the thread
            //pthread_join( thread_id , NULL);
            puts("Handler assigned");
        }
        if (client_sock < 0)
        {
            perror("accept failed");
            return 1;
        }
        return 0;
    }
    
     
    
    /*
    
     * This will handle connection for each client
    
     * */
    
    void *connection_handler(void *socket_desc)
    {
        //Get the socket descriptor
        int sock = *(int*)socket_desc;
        int read_size;
        char *message , client_message[2000];
    
        //Send some messages to the client
        message = "Greetings! I am your connection handler\n";
        write(sock , message , strlen(message));
        message = "Now type something and i shall repeat what you type \n";
        write(sock , message , strlen(message));
    
        //Receive a message from client
        while( (read_size = recv(sock , client_message , 2000 , 0)) > 0 )
        {
            //end of string marker
            client_message[read_size] = '\0';
    
            //Send the message back to client
            write(sock , client_message , strlen(client_message));
    
            //clear the message buffer
            memset(client_message, 0, 2000);
        }
    
        if(read_size == 0)
        {
            puts("Client disconnected");
            fflush(stdout);
        }
        else if(read_size == -1)
        {
            perror("recv failed");
        }
        return 0;
    } 
    
    
    /*
    
        C socket client example, handles multiple clients using threads
        Compile
        gcc -o client client.c
        run using -->  ./client 
    
    */
    
    #include <stdio.h>
    #include <sys/types.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <string.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <netdb.h>
    
    void error(char *msg)
    {
        perror(msg);
        exit(0);
    }
    
    int main(int argc, char *argv[])
    {
        int sockfd, portno, n,p,count=0;
        struct sockaddr_in serv_addr;
        char buff[256],client[100],temp_buff[100];
        FILE *id;
        id = popen("id -n -u","r");
        fgets(client,100,id);
        strtok(client,"\n");
        portno = 8888;
    
        bzero((char *) &serv_addr, sizeof(serv_addr));
    
        sockfd = socket(AF_INET, SOCK_STREAM, 0);
        if (sockfd < 0)
            error("ERROR opening socket"); 
        bzero((char *) &serv_addr, sizeof(serv_addr));
    
        serv_addr.sin_family = AF_INET;
        serv_addr.sin_port = htons(portno);
        serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    
        //getnameinfo((struct sockaddr *)&serv_addr, sizeof serv_addr, host, sizeof host, service, sizeof service, 0);
        if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0)
        error("ERROR connecting");
        while(1)
        {
          if (count == 0)
          {
            p = write(sockfd,client,strlen(client));
            if (p < 0)
                error("ERROR writing to socket");
            bzero(temp_buff,sizeof(temp_buff));
            n = read(sockfd,temp_buff,99);
            if (n < 0)
                error("ERROR reading from socket");
            count++;
          }
          else
          {
            printf("%s: ",client);
            bzero(buff,256);
            fgets(buff,255,stdin);
            n = write(sockfd,buff,strlen(buff));
            if (n < 0)
                error("ERROR writing to socket");
            if (buff[0] == 'q')
            {
                close(sockfd);
                break;
            }
    
            n = read(sockfd,buff,255);
            if (n < 0)
                error("ERROR reading from socket");
            printf("%s:%s",temp_buff,buff);
        }
           }    
        return 0;
    }

Wednesday, 17 February 2016

ChatBox using socket programming in c


SERVER CODE

Save It With server.c


/*
*   Usage :  ./server <SERVER IP ID> <PORT NU.> 
*       Use port number between 5000 to 65535
*/

#include <stdio.h>
#include <sys/types.h> 
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>

main(int argc,char **argv)
{

    int sfd, nfd, portno;
    char a[25];
    char reply[100];
    struct sockaddr_in v,v1;
    int  n;
    int size=0;
    FILE *in=NULL;
    char server[256],client[256];

    in=popen("id -n -u", "r");
    fgets(server,100, in);
    strtok(server, "\n");
    //printf("%s",server);

    //socklen_t n;

    // First call to socket() function /
    sfd = socket(AF_INET, SOCK_STREAM, 0);
    if(sfd<0)
    {
        perror("socket");
    }

    v.sin_family = AF_INET;
    v.sin_addr.s_addr =inet_addr(atoi(argv[1]));   /////server ip add
    v.sin_port = htons(atoi(argv[2])); ///// port num

    bind(sfd, (struct sockaddr *) &v, sizeof(v));
    perror("bind");   

    listen(sfd,1);
    perror("listen");   

    n=sizeof(v1);
    printf("n=%d\n",n);
    int cnt = 0;
    nfd = accept(sfd, (struct sockaddr *) &v1, &n);
    perror("accept");   

    while(1)
    {
        if(cnt==0)      //if condition transfer user name on client side.
        {   
            read(nfd,a,sizeof(a));
            strcpy(client,a);
            bzero(a,sizeof(a));
            cnt++;
            send(nfd,server,strlen(server)+1,0);
        }
        else            // else condition use for normal cheting.
        {
            bzero(a,sizeof(a));
            recv(nfd,a,sizeof(a),0);
            if(a[0]=='q')
            {
                close(nfd);
                break;
            }

        
            printf("%s-->%s",client,a);
                sleep(1);
            printf("%s:",server);
            bzero(reply,sizeof(reply));
            fgets(reply,sizeof(reply),stdin);
            send(nfd,reply,strlen(reply)+1,0);
        }
        
    }
}



CLIENT CODE

Save It With client.c

/*
*   Usage :  ./client <SERVER IP ID> <PORT NU.> 
*       Use port number between 5000 to 65535
*/


#include <stdio.h>
#include <sys/types.h> 
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
main(int argc,char **argv)
{

    int sfd, nfd, portno, clilen;
    char a[25],b[25];
    struct sockaddr_in v;
    int  n;
    int size=0;
    FILE *in=NULL;
    char client[256],server[256];

    in=popen("id -n -u", "r");
    fgets(client,100, in);
    strtok(client, "\n");

    // First call to socket() function /
    sfd = socket(AF_INET, SOCK_STREAM, 0);

    v.sin_family = AF_INET;
    v.sin_addr.s_addr =inet_addr(atoi(argv[1]));
    v.sin_port = htons(atoi(argv[2]));
    bind(sfd, (struct sockaddr *) &v,  sizeof(v));

    n=sizeof(v);
    printf("n=%d\n",n);
    int cnt =0;
    connect (sfd, (struct sockaddr *)&v , n);
    perror("connect");

    while(1)
    {   
        if(cnt == 0)            //if condition transfer user name on client side.
        {   
            write (sfd,client,strlen(client)+1);
            bzero(b,sizeof(b));
            cnt++;
            sleep(1);
            recv(sfd,b,sizeof(b),0);
            strcpy(server,b);
        }
        else                // else condition use for normal cheting.
        {
            printf("%s>>",client);
            fgets(a,sizeof(a),stdin);

            if(a[0]=='q')
            {
                close(sfd);
                break;
            }
        
            write (sfd,a,sizeof(a));
            sleep(1);
            bzero(b,sizeof(b));
            read(sfd,b,sizeof(b));
            printf("%s:%s",server,b);
        }
    }
    
}



download Programming Embedded Systems: With C and GNU Development Tools, 2nd Edition pdf


If you have programming experience and a familiarity with C--the dominant language in embedded systems--Programming Embedded Systems, Second Edition is exactly what you need to get started with embedded software. This software is ubiquitous, hidden away inside our watches, DVD players, mobile phones, anti-lock brakes, and even a few toasters. The military uses embedded software to guide missiles, detect enemy aircraft, and pilot UAVs. Communication satellites, deep-space probes, and many medical instruments would have been nearly impossible to create without embedded software.

Whether you are new to embedded systems or have done embedded work before, you'll benefit from the topics in this book, which include:
  • How building and loading programs differ from desktop or servercomputers
  • Basic debugging techniques--a critical skill when working withminimally endowed embedded systems
  • Handling different types of memory
  • Interrupts, and the monitoring and control of on-chip and externalperipherals
  • Determining whether you have real-time requirements, and whetheryour operating system and application can meet those requirements
  • Task synchronization with real-time operating systems and embeddedLinux
  • Optimizing embedded software for size, speed, and power consumption
  • Working examples for eCos and embedded Linux





Press Download Button ----->     Download Now


Embedded Systems Building Blocks 2nd Edition pdf







Press Download Button ----->     Download Now







Friday, 11 December 2015

Recover your lost file after Notepad ++ crash or Notepad++ not working.

What if your notepad++ crash while you are updating your file or doing something on notepad++ and suddenly you got error message and  after restart notepad++ you see the file is empty!!!!!!!! I am sure it will make you crazy and your mind will running like electricity ,may be you will loss temper on notepad++.This thing happens with me ones during working on my project. Luckily we have solution if this thing happens to you gain. You can recover your file and its content.

Step 1. When Notepad++ crash

You are updating your file, suddenly following screen appears on your window
source code editor has stopped working. i.e notepad ++ crash !!!.after pressing "Closing the program"
your notepad++ will restart .After restart you will notice you file as blank. Your Mind Also will be BLANK!!!!!!!




Then do not close the notepad++ or not change any things.

Step 2. Locate the file in Notepad++ Cache

Here is simple shortcut to locate the local copy of the file.system always make path for heaven so find it in cache.

Press WinKey+R . Now in run textbox enter the path below.

%APPDATA%\notepad++


Step 3.Create backup of the cache file

After pressing OK button of run window it will open other window like below.Now in backup folder all your edited files present . And Supersonically you will fill safe and Heaven.!!!!!!!!!!!!!!
Locate and copy the file  for backup copy the file on desktop .
After creating backup ,you can restart your Notepad++ (GNU) .

Step 4. Recover the file.

After open backup folder you will see below window in which you will see your last edited file.Open those file using notepad++ or with notepad++.It will open your lost data.

So  next time if notepad crashes while uploading then keep these steps in mind.



Now Be Relex and Carry on your work.Be Happy.

Wednesday, 9 December 2015

Useful Keyboard shortcut for Eclipse



Eclipse Shortcuts


F3                              Jumps to include file or variable declaration/definition.

Alt+← / Alt+→        Navigate through my source to back and forward.

Ctrl+Space               Content assist which proposes methods/member variables and more based on                                                              my typing.

Ctrl+3                      Quick Access let me go to views, perspectives and more

Ctrl+M                     Maximizes the current view or editor. Press Ctrl+M again and it goes back to                                                                   the previous size.

Ctrl+Shift+/             Insert block comment, remove it again with Ctrl+Shift+\

Ctrl+Shift+T           Open an element with wildcard support.

Ctrl+F7                   Switch to next view. Pressing again Ctrl+F7 let you iterate to the next view.

Ctrl+Shift+F7         for previous view.

Ctrl+Alt+h              Opens the call hierarchy.

Ctrl-O                      Open the Quick Outline View.

Ctrl+L                      Jump to Line Number. To hide/show line numbers, press ctrl+F10 and select                                                                  'Show Line Numbers'

Ctrl+F10, then n      Show or hide line numbers

Ctrl+Shift+P            With a bracket selected: jump to the matching closing or opening bracket

Ctrl+↓/Ctrl+↑          Scroll Editor without changing cursor position

Ctrl+D                      Delete Line

Ctrl+Delete              Delete next word

Ctrl+Backspace      Delete previous word

Shift+Ctrl+Y           Change selection to all lower case

Shift+Ctrl+X            Change selection to all upper case

Ctrl+K/Ctrl+Shift+K Find previous / find next occurrence of search term (close find window first)

Ctrl+H                     Search Workspace (Java Search, Task Search, and File Search)

Ctrl+/                       Comment / uncomment line or selection ( adds '//' )

Shift+Ctrl+à /ß   Change selection 

Ctrl + E                   for a list of editor

Ctrl+F6                   for switching to the next editor through a list




Wednesday, 28 October 2015

How to add a drop-down list to an Excel cell

In Access, you can limit user entries by forcing users to choose a value from a list control. Office applications use the same functionality in built-in drop-down lists. For instance, the Highlight and Font Color controls on most Formatting toolbars use this flexible tool. Simply click the small triangle to the right of the icon to display a list of choices.
You can create the same type of control for your users in an Excel sheet, but the process isn't intuitive. The option is in the Data Validation feature. Fortunately, once you know the feature exists, it's easy to implement. You need only two things: a list and a data entry cell. The following sheet shows a simple drop-down list in an Excel sheet.
Users click the drop-down arrow to display a list of items from A1:A3. If a user tries to enter something that isn't in the list, Excel rejects the entry. To add this drop-down list to a sheet, do the following:
  1. Create the list in cells A1:A3. Similarly, you can enter the items in a single row, such as A1:C1.
  2. Select cell E3. (You can position the drop-down list in most any cell or even multiple cells.)
  3. Choose Validation from the Data menu.
  4. Choose List from the Allow option's drop-down list. (See, they're everywhere.)
  5. Click the Source control and drag to highlight the cells A1:A3. Alternately, simply enter the reference (=$A$1:$A$3).
  6. Make sure the In-Cell Dropdown option is checked. If you uncheck this option, Excel still forces users to enter only list values (A1:A3), but it won't present a drop-down list.
  7. Click OK.

You can add the drop-down list to multiple cells. Select the range of data input cells (step 2) instead of a single cell. It even works for noncontiguous cells. Hold down the Shift key while you click the appropriate cells.
It's worth noting that the drop-down arrow is visible only when the cell is active.

Wednesday, 2 September 2015

Configure TCL in eclipse

Hello Guys,
Before some time I was working on tcl script.somewhere in middle i need to integrate tcl in eclipse editor,at that time i explore lot of site but as per below step i got successfully configure tcl in eclipse.

To configure Eclipse as a TCL/TK IDE you would need the plugin DLTK (Dynamic Language Toolkit). Information on DLTK is availablehttp://www.eclipse.org/dltk/
DLTK supports other scripting languages such as PERL, PHP, TCL/TK etc.
Things you would need to setup TCL/TK Eclipse IDE –
  • Eclipse 3.4 or greater (ofcourse) : Java or JavaEE IDE.
  • DLTK’
  • TCL/TK
  • Komodo Remote Debugger
Steps to follow are –
  • Download and install Eclipse 3.4 or greater from eclipse.org (install the Java or JavaEE IDE).
  • To install the DLTK, in your eclipse IDE navigate the menu item “Help > Software Updates…”, or “Help > Install New Software…” to install plugins/updates.
  • After the site has been added it would show the list of plugins available under DLTK. Choose the following –
>>> Dynamic Language Toolkit – Core Frameworks
>>> Dynamic Language Toolkit – Core Frameworks SDK
>>> Dynamic Language Toolkit – iTCL Development Tools
>>> Dynamic Language Toolkit – iTCL Development Tools SDK
>>> Dynamic Language Toolkit – TCL Development Tools
>>> Dynamic Language Toolkit – TCL Development Tools SDK
>>> Dynamic Language Toolkit – XOTcl Development Tools
>>> Dynamic Language Toolkit – XOTcl Development Tools SDK

  • After you have selected all the above packages and agreed to the license agreement, install them.
  • After the install of the components, eclipse will re-start and the TCL environment (perspectives, windows etc.) would have been configured into eclipse.
  • Now download and install TCL Shell and interpreter itself. For Windows, you can download it from ActiveState (http://www.activestate.com/activetcl/) and for Linux download it from www.tcl.tk/software/tcltk/
  • After you have installed TCL in your preferred path/location; Open Eclipse IDE and follow the menu option “Window > Preferences > TCL“; Click on “Interpreters“, click Add button on the right, enter interpreter name as “TCL” and click “Browse..” and choose the path to the Tcl interpreter executable. Click OK and save the setting.


  • Now you are done. You can write and run TCL programs via Eclipse.
  • To debug your Tcl programs you would need to install the Komodo remote debugger.
  • You can download Komodo from activestate – http://aspn.activestate.com/ASPN/Downloads/Komodo/RemoteDebugging
  • Install the above software under a directory of your choice.
  • Now, open eclipse, and navigate to the following menu option “Window > Preferences > TCL“, expand TCL and then choose “Debug > Engines > Active State“. Under the “Paths” tab, select the “Path:” dropdown and under “External Debugging Engine” select browse and choose the executable for komodo remote debugger (for windows it would be dbgp_tcldebug.exe). Click OK and save the setting.
Now you are all set. You should be able to choose new TCL project, write your Tcl code and debug your programs.
Snapshot of Eclipse screen:



Reference :